私は多くのzipアーカイブを持っており、各zipアーカイブには複数のzipアーカイブが含まれています。このzipアーカイブとそのサブzipアーカイブ(それ自体はzipアーカイブではない)に含まれるすべてのファイルを再帰的に抽出する最良の方法は何ですか?
ベストアンサー1
これにより、含まれているzipファイルを除いて、すべてのzipファイルが現在のディレクトリに抽出されます。
find . -type f -name '*.zip' -exec unzip -- '{}' -x '*.zip' \;
これにより、コンテンツは現在のディレクトリに抽出されますが、コンテンツにサブディレクトリが含まれる可能性があるため、すべてのファイルがそのディレクトリに厳密に配置されるわけではありません。
実際にすべてのファイルを現在のディレクトリにのみ配置するには、次のように実行できます。
find . -type f -mindepth 2 -exec mv -- '{}' . \;
注:異なるディレクトリに同じ名前の2つのファイルがある場合、ファイルは破損します。
すべてのzipファイルとその中に含まれるすべてのzipを再帰的に抽出したい場合、次のコマンドは現在のディレクトリのすべてのzipファイルとその中に含まれるすべてのzipを現在のディレクトリに抽出します。
while [ "`find . -type f -name '*.zip' | wc -l`" -gt 0 ]
do
find . -type f -name "*.zip" -exec unzip -- '{}' \; -exec rm -- '{}' \;
done