tar 一个并非全部存在的文件列表

tar 一个并非全部存在的文件列表

我正在从类似的脚本运行命令

tar -c -f ar.tar a b c d

其中b、c和d可能不存在,并且可能是目录。我提出的解决方案是将ls -dto的输出通过管道传输grep,然后将其拼接到tar命令中,或者打开 的扩展 glob @(a|b|c|d)

有没有更简洁的方法来做到这一点?我使用的是 Debian Wheezy,它似乎没有参数--include

答案1

你可以试试

 tar cf ar.tar $(ls a b c d )

在哪里

  • c用于创建
  • f ar.tar指定 tar 文件

  • $(ls a b c d)将向标准输入列出真正存在的文件(并对其他文件给出错误)

答案2

如果可以在 tar 存档中获得文件的完整路径,您可以执行以下操作:

tar -c -f ar.tar $(readlink -e a b c d)

-ereadlink 选项将规范化现有文件名并默默地忽略任何其他文件名。

答案3

使用

find path/to/dir -name "*.ext1" -o -name "*.ext2"

解释

  1. 第一个参数是要搜索的目录。
  2. 默认情况下find进行递归。
  3. 代表.-o-or所以上面的意思是搜索这个通配符或这个。如果您只有一种模式,则不需要-o.
  4. 通配符模式周围的引号是必需的。

相关内容