ディレクトリツリー内の多くのフォルダを次のように圧縮したい
V-
something.txt
folder
folder
g.jpg
h.jar
Zipしようとすると、その内容(サブディレクトリとファイル)の代わりにvフォルダーでZipアーカイブの作成が終了します
どうすればこれを回避できますか?
したがって、私が正しく理解していれば、ルートフォルダーを含めずに、特定のフォルダーのファイルとフォルダーをアーカイブしようとしています。
例:
/test/test.txt
/test/test2.txt
test.txtとtest2.txtはZipに保存されますが、/ test /は保存されません。
/ test /ディレクトリにcdして、次のように実行できます。
Zip -r filename.Zip ./*
これは、filename.Zipという名前の同じフォルダーにアーカイブを作成します。または、実行できるフォルダ外から実行する場合、
Zip -r test.Zip test/*
/ *は、フォルダー全体ではなく、フォルダーの内容のみを含む部分です。
編集:OPは複数のzipを望んでいたが、解決策は少しハックになってしまいました。これを行うより良い方法があるかどうか興味があります。
for d in */ ; do base=$(basename "$d") ; cd $base ; Zip -r $base * ; mv "${base}.Zip" .. ; cd .. ; done;
Zipコマンドで-j
または--junk-paths
オプションを使用します。
Zip manページ から:
-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, Zip will store the full path (relative to the current directory).
このコマンドはどうですか?
$ cd somedir ; Zip -r ../zipped.Zip . * ; cd ..
お役に立てれば。
(cd directory && Zip -r ../out.Zip .)
メインシェルを同じディレクトリに保持し、コマンド後に終了するサブシェルのディレクトリのみを変更します。