watch 命令不适用于使用管道的命令
The watch command does not work with a command using a pipe
非常simple/quick的问题,为什么这个命令不起作用?
watch ls *.log | wc -l
或
watch -d ls *.log | wc -l
我正在尝试观察当前目录中文件总数的更新。
如果您想通过管道传输命令并观察它,请在其周围添加引号:
watch "ls | wc -l"
即使这里的问题显然是引用,你也不应该解析命令 ls
。计算目录中文件数的规范方法是:
find /path/to/dir -maxdepth 1 -type f -printf "c" | wc -c
这避免了可能包含换行符的有趣名称的问题。
OP 的解决方案将是:
watch 'find . -maxdepth 1 -type f -printf "c" | wc -c'
非常simple/quick的问题,为什么这个命令不起作用?
watch ls *.log | wc -l
或
watch -d ls *.log | wc -l
我正在尝试观察当前目录中文件总数的更新。
如果您想通过管道传输命令并观察它,请在其周围添加引号:
watch "ls | wc -l"
即使这里的问题显然是引用,你也不应该解析命令 ls
。计算目录中文件数的规范方法是:
find /path/to/dir -maxdepth 1 -type f -printf "c" | wc -c
这避免了可能包含换行符的有趣名称的问题。
OP 的解决方案将是:
watch 'find . -maxdepth 1 -type f -printf "c" | wc -c'