在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