从子目录中的文本文件中找到文件列表并放入 tarball 中?

从子目录中的文本文件中找到文件列表并放入 tarball 中?

我有一个需要 tar 的文件列表。通常,我会使用

tar -cvf allfiles.tar -T mylist.txt

但我发现我需要的文件分散在子目录中,并且我的列表只有文件名而没有路径。

有没有办法将“find”与 tar 命令结合起来,以便查找列表中的文件,无论它们位于子目录中的哪个位置?

答案1

您可以使用名称列表和来找到路径find,但是您可能会遇到一个小问题,即当不同目录中有同名的文件时。

如果这并不重要,你可以执行以下操作:

find <main_directory> | grep -f mylist.txt

然后,将列表用于tar命令。完整的命令可能如下所示:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -f mylist.txt --color=never)

注意到你必须使用--color=never,否则,如果您的 grep 启用了颜色,那么您将发送无效的输入tar

忽略大小写区别,在本例中,grep实际上是过滤文件,您只需添加标志-i

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -i -f mylist.txt --color=never)

相关内容