如何仅打印不为零的结果?

时间:2019-06-16 01:39:07

标签: bash

我有这个脚本。我只想打印非零结果。 我的环境是Os X

find /PATH/ -type f -exec basename "{}" | grep -i "Word" | wc -l

3 个答案:

答案 0 :(得分:2)

首先,这是一个执行相同操作的更快的find命令:

find /PATH/ -type f -iname '*Word*' | wc -l

现在,您可以将这个优化的命令放入if语句中:

if [[ `find /PATH/ -type f -iname '*Word*' | wc -l` ]]; then
   find /PATH/ -type f -iname '*Word*' | wc -l
fi

要仅运行一次命令,请将结果保存到变量中:

count=`find /PATH/ -type f -iname '*Word*' | wc -l`
if [[ $count -gt 0 ]]; then
   echo $count
fi

答案 1 :(得分:2)

您可以使用grep -v删除仅由零组成的输出(前面带有空格,因为这就是wc打印的内容)。通过@joanis优化搜索,可以得到:

find /PATH/ -type f -iname '*Word*' | wc -l | grep -v '^ *0$'

答案 2 :(得分:0)

对选定的记录进行计数时,不必筛选0个匹配项。 此命令显示一次或多次出现的所有基本名称。

find . -type f -iname '*Word*' -printf "%f\n" | sort | uniq -c

您可能想在上添加| sort -n,以查看哪个文件出现得最多。

也许您想要一些东西:Word在不同文件中出现的频率。

grep -Rci while  | grep -v ":0$"