TL/DR:我在 Solaris 10 中工作。我有一个ls ... | egrep ...
命令,我需要知道它是否输出任何结果。我可以| wc -c
在末尾添加一个;但我需要结果(0 或非零)在退出代码中,而不是在输出中。而且我不能使用if
,它不是 bash 脚本,我只能执行一个命令。
长版:我正在编写一个维护过程来压缩和删除 Solaris 10 系统中的旧日志文件。它检查给定路径中的所有 .log 或 .xml 文件,获取给定月份最后修改的文件,用它们创建一个 .tar,然后删除原始文件:
ls -Egopqt /path/ | egrep -i '2016-10-[0123][0-9] .*(\.log$|\.xml$)' | awk '{ print $7 }'
| xargs tar -cvf target.tar
Run Code Online (Sandbox Code Playgroud)
与删除文件相同,只需将最后一部分替换为: | xargs -i rm {}
我可能把它复杂化了,但它有效。除非给定月份没有文件;如果是这种情况,我会收到一条错误消息tar: Missing filenames
。在尝试创建 tar 之前如何检查它?我想到了这样的事情,使用 wc 检查是否有输出:
ls ... | egrep ... | wc -c
Run Code Online (Sandbox Code Playgroud)
0
当没有任何文件时正确输出,否则输出另一个数字。问题是: …