作为产品的一部分,提供了多个脚本。
在其中一个脚本中,我发现以下行似乎无法正常工作
find . -name *.old -type f -mtime +7 | xargs compress -f
file
当对 *.old 文件之一执行命令时,我得到以下结果:ASCII text, with very long lines
您有什么建议可以做什么吗?
答案1
该命令的输出与命令序列失败的file
原因无关。file
除了原始命令的输出之外find
,最有趣的是以下内容的输出:
find . -name *.old -type f -mtime +7
如果没有文件名回显,则将在compress
不带参数的情况下调用,因此等待标准输入。如果找到的文件的文件名中有空格,那么xargs
将其移交给压缩也会出现问题。
您至少应该尝试将其更改为:
find . -name "*.old" -type f -mtime +7 -print0 | xargs -0 --no-run-if-empty compress -f
根据OP评论进行更新,这将是:
find . -name "$FILE" -type f $ACTION_TYPE +$PARAM -print0 | xargs -0 --no-run-if-empty compress -f
for-print0
确保find
带-0
空格的文件名正确传递到压缩。如果根本没有找到文件,
则会--no-run-if-empty
阻止xargs
运行。compress