我在shell文件中使用下面的命令,并在正则表达式匹配的目录中正常工作。 问题是,它列出了正则表达式不匹配时的所有文件。任何人都知道为什么会出现这种情况? 反正有没有避免它?
find . -type f -mtime +365 | egrep '.*xxx.yyy*.*'|grep -v "[^.]/" | xargs ls -lrt | tr -s " " | cut -d" " -f6-9
谢谢你的时间。
注意:我在solaris 8上使用此脚本和splunk转发器。
答案 0 :(得分:2)
如果xargs
的输入为空,则它将在当前文件夹中执行ls -lrt
。
请尝试使用xargs -i "{}" ls -lrt "{}"
。这迫使xargs
将输入参数放入其执行的命令中的某个位置。如果它没有任何输入,它就不能完全跳过命令。
如果你有GNU xargs
,你可以改用开关--no-run-if-empty
。
如果这不起作用,请尝试将所有grep
移至find
,以便您可以使用-ls
来显示文件列表。如果没有文件匹配,这也将避免运行ls
命令。