Архивирование tar, которое принимает данные из списка файлов - PullRequest
131 голосов
/ 07 ноября 2011

У меня есть файл, содержащий список файлов, которые я хочу заархивировать с помощью tar. Давайте назовем это mylist.txt

Содержит:

file1.txt
file2.txt
...
file10.txt

Есть ли способ, которым я могу выдать команду TAR, которая принимает mylist.txt в качестве ввода? Что-то вроде

tar -cvf allfiles.tar -[someoption?] mylist.txt

Так что похоже на команду:

tar -cvf allfiles.tar file1.txt file2.txt file10.txt 

Ответы [ 6 ]

212 голосов
/ 07 ноября 2011

Да

tar -cvf allfiles.tar -T mylist.txt
81 голосов
/ 07 ноября 2011

Предполагая, что GNU tar (поскольку это Linux), вам нужна опция -T или --files-from.

27 голосов
/ 29 сентября 2015

Вы также можете указать имена файлов, которые могут быть полезны:

find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -
13 голосов
/ 15 марта 2016

Некоторые версии tar, например, версии по умолчанию в HP-UX (я тестировал 11.11 и 11.31), не включают параметр командной строки для указания списка файлов, поэтому приличный способ это сделать:

tar cvf allfiles.tar $(cat mylist.txt)
5 голосов
/ 25 сентября 2015

В Solaris вы можете использовать опцию -I для чтения из файла имен файлов, которые вы обычно указали бы в командной строке.В отличие от командной строки, это может создать tar-архивы с сотнями тысяч файлов (только что сделал это).

Таким образом, пример будет читать

tar -cvf allfiles.tar -I mylist.txt
2 голосов
/ 20 февраля 2017

Для меня в AIX это работает следующим образом:

tar -L List.txt -cvf BKP.tar
...