在Linux中,我试图监视当前目录的所有子目录并输出它们的文件数量。我公司目前拥有的命令是:Linux watch命令“没有这样的文件或目录”
watch 'for FILE in `find . -maxdepth 1 -mindepth 1 -type d | grep -v "unwanted\|directories\|here"`; do echo -n $FILE " "; find $FILE -type f | wc -l; done | column -t'
这完美的作品,除了偶尔我得到这个错误,
find: `FILE_NAME': No such file or directory
其中file_name是在子目录中的文件的名称。
有谁知道为什么会发生这种情况,以及如何解决它?谢谢!
是否有可能'FILE_NAME'正在被别的东西删除? 'find'有一个竞争条件,在'find'确定它在请求的目录中,但在可以用一个初始值(在这种情况下,'-type f')进行测试之前,文件可以被删除。 – chepner
@chepner这可能是原因。我监视目录的原因之一是确保正在清理文件。有没有解决这个问题的方法? –
我没有意识到。这只是'find'的一个警告,说它不能再找到一个它不会报告的文件。你可以用'find $ FILE -type f 2>/dev/null |来压制'find'的标准错误wc -l;' – chepner