bugfix> zip > 投稿

200以上のフォルダがあります .zip ファイル。これらの各ファイルには、いくつかの種類のアーカイブを含むフォルダーが1つだけあります(このフォルダーが欠落している場合があります)。なかでも抽出したいのは .jpg または .jpeg ファイル。の構造 zip ファイルは:

AAAA-99999-2015.zip
     AAAA-99999-2015 (optional)
          AAAA-99999-2015.jpg (or .jpeg)
          AAAA-99999-2015.prj
          AAAA-99999-2015.ecw
          readme.txt

¿これらの200のアーカイブをすべて手動で開かなくても、このタスクを自動化するにはどうすればよいですか?

回答 1 件
  • あなたはこのようなことをすることができます

    find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace unzip {} \*.jpg \*.jpeg
    
    

    これにより、現在のフォルダーとサブフォルダーで「* .zip」というファイルが検索され、それぞれが個別に検索されます( --max-args=1 ) コマンド unzip と呼ばれ、追加します \*.jpg \*.jpeg 、それによって抽出するファイルを選択します。

    (両方を選択した場合 *.jpeg そして *.jpg ファイルとこれらのいくつかは存在しません unzip それについて私たちに警告するかもしれません。これは無視しても問題ありません。)

    最初に何が起こるかをテストしたい場合は、 echo

    find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace echo unzip {} \*.jpg \*.jpeg
    
    

    ZIPファイル内のどこにあるかに関係なく、現在のフォルダー内のすべてのファイルを抽出する場合は、 -j オプション unzip

    find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace unzip -j {} \*.jpg \*.jpeg
    
    

    を使用してターゲットフォルダを追加することもできます -d foldername 後に -j

あなたの答え