将选定文件扩展名存档在未知树中的最佳方法是什么。我无法使用 tar/gzip/rsync 中的排除选项,因为不可能排除所有可能的扩展名变体。
示例备份递归树中的所有 .foo 和 .bar 文件,但不备份其他未知文件类型。
我认为这需要 ls/find、grep 和 tar/gzip 的组合。
谢谢
答案1
非常类似于dmourati 的回答,但没有 xargs。
find /path/to/tree \( -name "*.foo" -o -name "*.bar" \) -print0 | tar -T /dev/stdin --null -cvzf foobar.tar.gz
答案2
尝试这样的操作:
find /path/to/tree \( -name "*.foo" -o -name "*.bar" \) -print0 | xargs -r0 tar cvzf foobar.tar.gz
您通过 find 命令生成文件列表,然后将其通过管道传输到 xargs 并传输到 tar。