私のファイルは、archive.zip
次のようないくつかのディレクトリにあります。
dir/001/archive.zip
dir/002/archive.zip
dir/003/archive.zip
...
archive.zip
コマンドラインを使用して、異なる名前のすべてのディレクトリ内のすべてのファイルを再帰的に解凍する方法はありますか? ZIPファイルの内容は、ZIPファイルと同じディレクトリに抽出する必要があります。
フォルダdir
は共通で、archive.zip
親フォルダの名前だけが異なります。
よろしくお願いします!
答え1
これは職業のようですfind
。ディレクトリに変更しdir
、次のコマンドを実行します。
find . -type f -name "archive.zip" -execdir unzip {} \;
- これにより、名前が()のファイルに対して現在(、あなたの場合と
.
同じ)で始まるすべてのディレクトリが検索されます。dir
-type f
archive.zip
unzip {}
見つかったら、ファイル-execdir
は見つかったディレクトリ()でコマンドを実行し、見つかった{}
ファイルの名前を引用します(find
この場合は実際のファイル名に置き換えられますarchive.zip
)。
と言うのと同じ効果があります。cd 001/; unzip archive.zip; cd ..; cd 002/; unzip archive.zip
(私の考えでは、あなたがアイデアを得たようです。)
ノート実行するコマンドは;
実際にエスケープする必要があります\
。それ以外の場合、シェルはコマンドに到達する前にそれを解釈しますfind
。
また、dir/
ディレクトリ自体archive.zip
に抽出したくない、下の最初のサブディレクトリレベルで始まるファイルのみを考慮したい場合は、-mindepth 1
開始点の後に引数を追加する必要があります。.
find
dir/