Find
僅列出目前目錄的目錄樹的所有文件/目錄的計數
我想列出目前目錄的每個子目錄樹下的目錄數。由於目錄太多,我無法進入單個目錄並檢查。我想生成一份類似於下圖所示的報告:
問題是:我的伺服器發出一些警告,表明已達到創建目錄的最大限制。所以我想知道我的父目錄中哪個目錄有最多的子目錄(不包括文件),
純ksh93解決方案:
FIGNORE='@(.|..)' for dir in */; do a=( "$dir"/**/* ); printf "%s\t%s\n" "$dir:" "${#a[*]}"; done
結果來自
/usr/src
:linux-3.17.7-gentoo/: 561 linux-3.5.7-gentoo/: 517 linux-3.7.10-gentoo/: 505 linux-3.7.9-gentoo/: 513 linux-3.8.13-gentoo/: 551 linux-4.0.5-gentoo/: 1849
您可以先找到頂層目錄,然後使用第二個查找來計算頂層目錄中的文件和目錄的數量:
$ for dir in $(find . -maxdepth 1 ! -path . -type d | sort); \ do echo -n "$dir " && find $dir ! -path . | wc -l ; done ./adir 1151 ./anotherdir 140 ./623de41e44 280 ./examples 154 ...