watch命令不适用于使用管道的命令

时间:2020-01-21 09:20:20

标签: bash watch ls wc

非常简单/快速的问题,为什么该命令不起作用?

watch ls *.log | wc -l

watch -d ls *.log | wc -l

我正在尝试监视当前目录中文件总数的更新。

2 个答案:

答案 0 :(得分:1)

如果您想传递命令并观看它,请在其周围加上引号,例如:

watch "ls | wc -l"

答案 1 :(得分:1)

即使这里的问题显然是引号,您也绝对不要解析命令ls。计数目录中文件数量的典型方法是:

find /path/to/dir -maxdepth 1 -type f -printf "c" | wc -c

这避免了有趣的名称可能包含换行符的问题。

OP的解决方案将显示为:

watch 'find . -maxdepth 1 -type f -printf "c" | wc -c'