Ответ 1
Да:
tar -cvf allfiles.tar -T mylist.txt
У меня есть файл, содержащий список файлов, которые я хочу архивировать с помощью 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
Да:
tar -cvf allfiles.tar -T mylist.txt
Предполагая, что GNU tar (так как это Linux), опция -T
или --files-from
- это то, что вы хотите.
Вы также можете использовать имена файлов, которые могут быть полезны:
find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -
Некоторые версии tar, например, версии по умолчанию на HP-UX (я тестировал 11.11 и 11.31), не включайте параметр командной строки для указания списка файлов, поэтому для этого необходимо сделать достойный подход:
tar cvf allfiles.tar $(cat mylist.txt)
В Solaris вы можете использовать параметр -I для чтения имен файлов, которые вы обычно указываете в командной строке из файла. В отличие от командной строки, это может создавать архивы tar с сотнями тысяч файлов (только что сделал).
Таким образом, пример будет читать
tar -cvf allfiles.tar -I mylist.txt
Для меня в AIX он работал следующим образом:
tar -L List.txt -cvf BKP.tar
В OpenBSD с -I
есть -I
и строки, которых нет в списке файлов...