複数のサブディレクトリにあるファイルのみを圧縮する方法は?

複数のサブディレクトリにあるファイルのみを圧縮する方法は?

フォルダがあり、workingその構造は次のとおりです。

working/
  100/
      1/
      2/
      3/
  200/
      1/
      2/
      3/
  300/
      1/
      2/
      3/

1 2 3フォルダには約1000個のファイルがあります。

1 2 3フォルダ内のファイルを別々に圧縮したいです。 zipには最上位ディレクトリを含めないでください。どこにでもジッパーを取り付けてください。たとえば、フォルダの下にファイルがある場合は、foo1zip形式でなければならず、fooファイルのみが必要です。foo2foo311

ベストアンサー1

単純なループがトリックを実行します。

cd working
for dir in */*/; do
  [ -e "$dir/files.zip" ] ||   # skip directories where the zip already exists
  ( cd -- "$dir" && zip -r files.zip .)
done

zipは、そのディレクトリで繰り返されたときに構築されるzipファイルをスキップするのと同じくらいスマートです。他のいくつかのアーカイブプログラムは、構築中のアーカイブに構築中のアーカイブを埋めようとします。

おすすめ記事