web-dev-qa-db-ja.com

複数のディレクトリを個々のZipファイルに圧縮するコマンド

私はその中に何十ものディレクトリを含む単一のディレクトリを持っています。

私はコマンドラインに慣れていないので、各サブディレクトリを一意のsub-directory.Zipファイルに圧縮するコマンドを考え出すのに苦労しています。

つまり、最終的に、私のプライマリディレクトリには、元のすべてのサブディレクトリと、対応する.Zip各サブディレクトリの圧縮されたコンテンツを含むファイル。

このようなことは可能ですか?もしそうなら、それがどのように行われるか私に見せてください。

44
Evster

このループはbashで使用できます。

for i in */; do Zip -r "${i%/}.Zip" "$i"; done

iはループ変数の名前です。 */は、現在のディレクトリのすべてのサブディレクトリを意味し、それらの名前の末尾にスラッシュが含まれます。これを実行する前に、正しい場所にcdを確認してください。 "$i"は、末尾のスラッシュを含め、単にそのディレクトリに名前を付けます。引用符は、ディレクトリ名の空白が問題を引き起こさないことを保証します。 ${i%/} のようなものです $iですが、末尾のスラッシュが削除されているため、それを使用してZipファイルの名前を作成できます。

これがどのように機能するかを確認したい場合は、echoの前にZipを含めると、コマンドが実行されずに出力されます。

80
MvG