Find

僅列出目前目錄的目錄樹的所有文件/目錄的計數

  • October 18, 2015

我想列出目前目錄的每個子目錄樹下的目錄數。由於目錄太多,我無法進入單個目錄並檢查。我想生成一份類似於下圖所示的報告:

在此處輸入圖像描述

問題是:我的伺服器發出一些警告,表明已達到創建目錄的最大限制。所以我想知道我的父目錄中哪個目錄有最多的子目錄(不包括文件),

純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
...

引用自:https://unix.stackexchange.com/questions/216694