Как извлечь все файлы tar.gz, присутствующие в нескольких папках одновременно, в другой каталог?

2061
beginner

В моем текущем каталоге много папок. В каждой папке есть файл 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 
1

1 ответ на вопрос

1
slhck

Используйте findи выполните команду для каждого найденного файла в каталоге этого файла:

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

-execdirОпция выполняет tarиз папки найденного файла, и {}будет заменена именем файла обработан в.

Смотрите findдокументацию для получения дополнительной информации.

Где мне указать целевой каталог в команде? beginner 6 лет назад 0
Хорошо. Дайте так, чтобы получить извлеченные файлы в целевой каталог. находить . -name '* .tar.gz' -execdir tar -C / path / to / targettdirectory -xzvf '{}' \; Это сработало beginner 6 лет назад 0
Да, вы можете указывать команды как обычно в опции `-exec`. slhck 6 лет назад 0
привет ... У меня есть небольшое сомнение. Есть ли способ указать путь к этим ... *. Tar.gz файлам? beginner 6 лет назад 0
Вы можете `найти` в другом каталоге, заменив` find .` на `find / path / to / directory`. slhck 6 лет назад 0

Похожие вопросы