1つのディレクトリに数十のディレクトリが含まれています。
私はコマンドラインを初めて使用し、各サブディレクトリを一意のsub-directory.zipファイルに圧縮するコマンドを思い付くのに苦労しています。
したがって、最終的に、プライマリディレクトリは、元のすべてのサブディレクトリと、対応する.zip
で埋められます。 各サブディレクトリの圧縮されたコンテンツを含むファイル。
このようなことは可能ですか?もしそうなら、それがどのように行われるかを見せてください。
承認された回答:
このループはbash
で使用できます :
for i in */; do zip -r "${i%/}.zip" "$i"; done
i
ループ変数の名前です。 */
現在のディレクトリのすべてのサブディレクトリを意味し、それらの名前の末尾にスラッシュが含まれます。必ずcd
これを実行する前に適切な場所に移動します。 "$i"
末尾のスラッシュを含め、そのディレクトリに名前を付けるだけです。引用符は、ディレクトリ名の空白が問題を引き起こさないようにします。 ${i%/}
$i
のようなものです ただし、末尾のスラッシュが削除されているため、これを使用してzipファイルの名前を作成できます。
これがどのように機能するかを確認したい場合は、echo
を含めてください zip
の前 実行される代わりにコマンドが出力されます。
並列実行
それらを並行して実行するには、&
を使用できます :
for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait
wait
を使用します 終了する前にすべてのバックグラウンドタスクが終了するのを待つようにシェルに指示します。
現在のディレクトリにフォルダが多すぎると、このコードが並列タスクの数を制限しないため、コンピュータを圧倒する可能性があることに注意してください。