我目前有这个脚本:
find . -iname '*.log' -print0 | xargs -0 tar zcf $file
从给定目录收集所有“*.log”文件。我想修改它以包含所有“.txt”文件,但我不知道怎么做,这应该很简单吧?
我目前有这个脚本:
find . -iname '*.log' -print0 | xargs -0 tar zcf $file
从给定目录收集所有“*.log”文件。我想修改它以包含所有“.txt”文件,但我不知道怎么做,这应该很简单吧?
这与 Raphael B. 的答案几乎相同,但也可以处理超过最大参数长度的问题。我们通过简单地告诉 tar 从标准输入(没有限制)读取要归档的文件名而不是期望它们作为参数来做到这一点:
请注意,这是 GNU 特定的。其他 UNIX 或类 UNIX 系统上的 tar 不理解
--null
,但 Ubuntu 中的 tar 是 GNU tar,所以在那里可以正常工作。你走对了。尝试这个:
find . \( -iname "*.log" -or -iname "*.txt" \) -print0 | xargs -0 tar zcf $file
以下是无用 xargs 的答案:
我没有对很多文件进行测试——如果有评论和数字,我会很高兴,但它失败了。
伪参数,您需要记住将 -delete 放在最后:嗯,是的,您也必须记住将 | xargs ...最后,不是吗?
您可以将 替换为
'.*\.(log|txt)'
任何POSIX 扩展正则表达式。该示例匹配:
这个非常简单的方法怎么样: