3

Я хочу использовать tar (и gzip) файлы без каталогов и не хранить пути к каталогам. Я хочу только плоские файлы в моем архиве.

Например, если я сделаю что-то вроде этого:

tar -czf archive.tgz /home/another/path/*

Тогда в моем архиве будут файлы с путями:

home/another/path/file1
home/another/path/file2
home/another/path/file3

Но я хотел бы иметь только это:

file1
file2
file3

Это эквивалент команды zip zip -D -j .

Для простоты предположим, что внутри /home/another/path/ нет подкаталогов - он содержит только файлы.

Я попробовал остроумие -C вариант, но это не сработало. С такой командой:

tar -C /home/another/path/ -czf archive.tgz *

Tar пытался архивировать файлы в текущем каталоге, а не в каталог -C . Я использую (GNU tar) 1.19 .

1 ответ1

2

Попробуйте следующее:

find . -type f -printf "%h\n%f\n" | xargs -L 2 tar -rf /tmp/files.tar -C 

или некоторые изменения в зависимости от ваших потребностей. При выполнении этой команды следует учитывать безопасность. И если вы хотите иметь «./» перед именем файла, следующее может быть немного более безопасным:

find -type f -execdir tar -rf /tmp/files.tar {} \;

или же

find -type f -execdir tar -rf /tmp/files.tar {} +

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