1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .