2012-03-14 11 views
15

zipファイルを作成しようとしていますが、コマンドラインから定義されているrootdirではなくディレクトリ構造の大部分を保持したいとします。私が使用しているコマンドは次のとおりです。ディレクトリ構造全体を除いてzipファイルを作成する方法

zip -r out.zip /foo/bar/ 

私はそれがバーを再帰と(それがない)保存ディレクトリ構造を持つすべてのファイルを追加したいと思います。しかし私は 'foo'が作成されたzipファイルの最上位ディレクトリになることを望んでいません。バーを最上位のディレクトリにしたいと思います。

これについて簡単な方法はありますか?私は、問題を避けるためにジップする前にディレクトリを変更することができたことを認識していますが、私はこれを必要としないソリューションを探しています。

答えて

8

私はzipにトップレベルのディレクトリを除外する方法がないと信じています。私はあなたの最善の策は、次のようなことをすることだと考えています: pushd/foo; zip -r out.zip ./bar;ポップ;

これはまさにあなたが望んでいないと答えたものです。

+2

私は 'tar -C/foo/bar -c out.tar *'が彼を幸せにするとは思っていません。 –

+1

私はこれをもう一度。私はマックの上にあり、zipを必要とし、tar.gzは必要ありません。 pushdは本当に良い選択肢のようです。 – slott

8

これはそれを行う必要があります。/foo/out.zip

+1

OPは彼がディレクトリを変更したくないと言った。 – Amala

+0

この回答はOPが望むものとまったく同じです。容認された答えだったはずです。 – Jason

+0

私はPHPスクリプトでzipを実行しています。それで? –

-1

誰かが、この時につまずくと、上記の解決策に満足しない場合は、ここでは非常に簡単なのは以下に

cd /foo/bar/ 
zip -r ../out.zip * 

アーカイブは次のようになります長いサブディレクトリを圧縮しないようにする回避策。 /、それを削除するだけでビュン後:

ZipFiles <- list.files(".../ZipFiles") # Insert your long subdirectory into .../ 

dir.create("C:/ZipFiles") 
dir.create(".../FolderToBeZipped") 
file.copy(from = ZipFiles,to = "C:/ZipFiles") 
zip(".../FolderToBeZipped", 
    files = "C:/ZipFiles") 
unlink("C:/ZipFiles",recursive = TRUE) 

結果は、その後です.../FolderToBeZipped.zip/ZipFiles/

利点は、あなたがする必要はないということです。これは、一時的にCにフォルダを作成する必要がコードを実行するときにサブディレクトリ(またはプロジェクト)内にあること。

関連する問題