web-dev-qa-db-ja.com

一度に複数のフォルダに存在するすべてのtar.gzファイルを別のディレクトリに抽出するにはどうすればよいですか?

現在のディレクトリには多くのフォルダがあります。各フォルダーにはtar.gzファイルがあります。 tar.gzファイルを抽出するには、各フォルダー内にいて、毎回次のコマンドを実行する必要があります。

tar xvzf tar.gz -C /path/to/targetdirectory

私の現在のディレクトリ内では、次のようになります。

   current directory
            ├──Folder1
                ├── A.tar.gz
            ├──Folder2
                ├── B.tar.gz
            ├──Folder3
                ├── C.tar.gz
            ├──Folder4
                ├── D.tar.gz
            ├──Folder5
                ├── E.tar.gz

一度に全部抽出するためにこうやってみました

tar xvzf */*.tar.gz -C /path/to/targetdirectory

これは私にエラーを与えました:

tar: Folder1/A.tar.gz: Not found in archive
tar: Folder2/B.tar.gz: Not found in archive
tar: Folder3/C.tar.gz: Not found in archive
tar: Folder4/D.tar.gz: Not found in archive
tar: Folder5/E.tar.gz: Not found in archive
2
beginner

findを使用し、見つかったファイルごとに、そのファイルのディレクトリでコマンドを実行します。

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \;

-execdirオプションは、見つかったファイルのフォルダー内からtarを実行し、{}はtarfileの名前に置き換えられます。

詳細は findのドキュメント を参照してください。

5
slhck