linuxtar⽂件列表,关于linux:从⽂件列表中获取输⼊的Tar归档我有⼀个⽂件,其中包含我想⽤tar存档的⽂件列表。
我们称之为
它包含:
<
<
...
<
有没有办法可以发出以作为输⼊的TAR命令?
就像是
tar -cvf allfiles.tar -[someoption?]
所以它就像我发出这个命令⼀样:
tar -cvf allfiles.
如果您不知道如何检查⼿册页:在命令⾏中,您可以键⼊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 -
linux退出文件命令
我希望我可以在中添加注释..是否有任何解决⽅法使⽤内部的⼀些tar选项?
@Stphane很简单,使⽤--exclude标志允许这样做。假设您的注释⾏以#开头,则以下命令将忽略/排除包含cmments的⾏上的任何尝试⽂件操作,即您的命令可能如下所⽰:tar -cvf allfiles.tar --exclude = ^#-。 Tar报告错误,但是当您检查tar存档时,没有错误,列表中的所有⽂件都在您的存档中。
如果你想压缩这个坏男孩,请添加z。
指出此命令适⽤于linux变体以及sunOS或其他变体上的命令,请查看下⾯的其他答案。例如。对于sunOS,我测试了两种替代⽅法:tar -cvf file.tar -和tar -cvf file.tar $()
假设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 $()
UUoC(不必要使⽤cat),只需$(。
请注意,如果很⼤,这可能会超出命令⾏的最⼤长度
在那种情况下tar -T 。像这个答案多余。
在Solaris上,您可以使⽤选项-I来读取通常在⽂件命令⾏中声明的⽂件名。 与命令⾏相⽐,这可以创建包含数⼗万个⽂件的tar存档(就是这样做)。
所以这个例⼦会读到
tar -cvf allfiles.tar -
在AIX上对我来说,它的⼯作原理如下:
tar - -cvf BKP.tar