linux tar文件列表,关于linux:从文件列表中获取输入的Tar归档

我有一个文件,其中包含我想用tar存档的文件列表。

我们称之为mylist.txt

它包含:

file1.txt

file2.txt

...

file10.txt

有没有办法可以发出以mylist.txt作为输入的TAR命令?

就像是

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

所以它就像我发出这个命令一样:

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

如果您不知道如何检查手册页:在命令行中,您可以键入man tar。 您可以使用箭头键PgUp和PgDn滚动手册,然后按q退出。 您还可以分别使用和?向前和向后搜索。

tar手册页对此选项非常无益(至少在RedHat 5.4至6.3中):" - T:从文件F中提取或创建名称"。"提取或创建"听起来像应用于从tar存档中取出文件,但不会将它们放入。-X exclude选项可以从旧的Unix tar命令中幸存下来,但显然-I(包含)没有!

尽管它是标准部分,但man部分的man页面很少。 请参阅。

是:

tar -cvf allfiles.tar -T mylist.txt

我希望我可以在mylist.txt中添加注释..是否有任何解决方法使用mylist.txt内部的一些tar选项?

@Stphane很简单,使用--exclude标志允许这样做。假设您的注释行以#开头,则以下命令将忽略/排除包含cmments的行上的任何尝试文件操作,即您的命令可能如下所示:tar -cvf allfiles.tar --exclude = ^#-T mylist.txt。 Tar报告错误,但是当您检查tar存档时,没有错误,列表中的所有文件都在您的存档中。

如果你想压缩这个坏男孩,请添加z。

指出此命令适用于linux变体以及sunOS或其他变体上的命令,请查看下面的其他答案。例如。对于sunOS,我测试了两种替代方法:tar -cvf file.tar -I list.txt和tar -cvf file.tar $(cat list.txt)

假设GNU tar(因为这是Linux),-T或--files-from选项就是你想要的。

此选项也存在于FreeBSD 10的"bsdtar 3.1.2"中。

您还可以输入可能有用的文件名:

find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -

如果.txt文件列表真的很大怎么办?应该使用xarg命令和tar -r ..而不是tar -c ..?

@Stphane嗯,我不认为列表的长度对这种方法很重要。事实上,我认为这种方法比xargs更好,因为xargs会反复重新运行tar来追加数据,但我并没有真正测试这些方法。

某些版本的tar(例如,HP-UX上的默认版本(我测试过11.11和11.31))不包含用于指定文件列表的命令行选项,因此一个体面的解决方法是执行此操作:

tar cvf allfiles.tar $(cat mylist.txt)

UUoC(不必要使用cat),只需$(。

请注意,如果mylist.txt很大,这可能会超出命令行的最大长度

在那种情况下tar -T 。像这个答案多余。

在Solaris上,您可以使用选项-I来读取通常在文件命令行中声明的文件名。 与命令行相比,这可以创建包含数十万个文件的tar存档(就是这样做)。

所以这个例子会读到

tar -cvf allfiles.tar -I mylist.txt

在AIX上对我来说,它的工作原理如下:

tar -L List.txt -cvf BKP.tar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值