Как извлечь tgz, который состоит из множества файлов, присутствующих в нескольких подпапках, в другой каталог (ubuntu linux)

330
cezudun
current directory ├──Folder1 ├── sub_folder1 ├──Folder2 ├── sub_folder21 ├── sub_folder22 ├── sub_folder221 ├──Folder3 ├── sub_folder31 ├──Folder4 ├── sub_folder41 ├──Folder5 ├── sub_folder51 

Учитывая вышеприведенную иерархию подпапок папок, которая была сжата в один файл tgz, мне нужно извлечь все файлы, присутствующие во всех подпапках папок, в один и только выходной каталог.
Фактически все файлы существуют в самом глубоком пути каждой комбинации подпапок папки. например, в sub_folder1, sub_folder2, sub_folder221 и т. д. Я пробовал со следующим:

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

... но при этом выводится точная иерархия файлов и подпапок, когда мне нужно, чтобы все файлы во всех подпапках были извлечены в одну выходную папку /path/to/one/folder

0
Непонятно: у вас есть один файл tar или много? (Вы указываете и то и другое.) Также покажите все команды, которые вы пробовали, и их результаты. Пожалуйста, не отвечайте в комментариях; [отредактируйте] ваш вопрос, чтобы сделать его более понятным и полным. Scott 6 лет назад 0

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

1
RalfFriedl

Это execdirсовершенно неправильная команда для вашей задачи, она изменится на каталог файла.

Если вы используете -exec, рабочий каталог останется прежним, и все файлы tar будут извлечены из этого каталога.

Существует также возможность -Cвнести tarизменения в этот каталог.

find . -name '*.tar.gz' -exec tar xzvfC '{}' /path/to/one/folder \; 

или же

find . -name '*.tar.gz' -exec tar -xzvf '{}' -C /path/to/one/folder \; 
Попробуйте команду, которую я добавил. RalfFriedl 6 лет назад 0
i get following error:tar (child): C: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2. i also edited my question, perhaps it was missleading tar: Error is not recoverable: exiting now cezudun 6 лет назад 0
Попробуйте измененные команды. RalfFriedl 6 лет назад 0