如何使用tar压缩.txt文件中的一组文件?

如何使用tar压缩.txt文件中的一组文件?

我有很多文件名列在名为 的 .txt 文件中to_be_archived_files.txt,其内容如下:

~/Documents/dir1/a.html
~/Documents/dir1/b.html
~/Documents/dir1/c/1.html

如何将它们全部添加到archive.tar.gzby 中柏油

我想要这样的东西:

tar czf archive.tar.gz -FROM-FILELIST=to_be_archived_files.zip

我怎样才能做到这一点?

答案1

使用该-T选项:

 -T, --files-from FILE
       get names to extract or create from FILE

请注意,它不能用~作主目录的别名,您需要明确指定文件夹。

答案2

您需要~首先将其替换为您的主目录。假设您的主目录不包含:(它们通常不包含,否则无法在 中引用/etc/passwd):

(cd / &&
  sed "s:^~:$HOME:" | pax -w | gzip) < file.list > file.tar.gz

或者,如果您tar是 GNU 的,或者bsdtar

(cd / &&
  sed "s:^~:$HOME:" | tar -T - -zcf -) < file.list > file.tar.gz

其他一些人则没有tar这样做。为此使用一个参数 ( )。-I-Tstarlist=-star cvf - list=-

请注意,在上面的解决方案中,除了 之外star,如果该列表中的任何文件的类型为目录,则包含这些目录的全部内容。

要仅存档目录而不存档其内容,请使用pax添加-d选项,使用 GNUtarbsdtar--no-recursion选项(也-n使用bsdtar)。

使用star,要包含目录的内容,请添加该-dodesc选项。

相关内容