GNU/Linux >> Linux の 問題 >  >> Linux

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

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を使用します 終了する前にすべてのバックグラウンドタスクが終了するのを待つようにシェルに指示します。

現在のディレクトリにフォルダが多すぎると、このコードが並列タスクの数を制限しないため、コンピュータを圧倒する可能性があることに注意してください。


Linux
  1. Linuxで複数のファイルを圧縮する方法

  2. シェルスクリプト:ファイルをディレクトリとサブディレクトリに並べ替えますか?

  3. Linux でのファイル/ディレクトリの最大数は?

  1. Linuxでファイルとディレクトリをコピーする

  2. 百万のXMLファイルを含むディレクトリから複数のZipを作成するにはどうすればよいですか?

  3. ディレクトリ内のすべてのファイルを解凍します

  1. Linux Bash:複数の異なるファイルを同じディレクトリに移動する

  2. cp ファイルのみ、ディレクトリをスキップ

  3. dd イメージを複数のファイルに分割する