我想要一个包含文件数量的目录列表;然后按降序排列- 只是为了看看哪些目录包含最多的文件。mp3
我的命令
## Relevant command
find . -mindepth 1 -type f -iname "*.mp3" -printf '%P\0' |
awk -F/ -vRS='\0' '{n[$1]++}; END{for (i in n) {printf(n[i]" "i" \n")};}' > ./foo.txt
sort -rno ./foo.txt ./foo.txt
## Full command (output improvements only)
find . -mindepth 1 -type f -iname "*.mp3" -printf '%P\0' |
awk -F/ -vRS='\0' '{n[$1]++}; END{for (i in n) {printf("%03d",n[i]);printf(" ");printf(substr(i,0,60));printf("\n")}; if(length(n)==0) print "NO mp3 found." }' > ./foo.txt
sort -rno ./foo.txt ./foo.txt
目录结构
./dir_1/fileA.mp3
./dir_2/subdir_1/fileB.mp3
./dir_2/subdir_2/fileC.mp3
./dir_2/subdir_2/fileD.mp3
...
输出
# What I get:
003 dir_2
001 dir_1
# What I want:
002 dir_2/subdir_2
001 dir_2/subdir_1
001 dir_1
问题
它只打印最顶层的目录,而不是最深的目录。它汇总了子目录的 mp3 数量。
-mindepth
由于深度不同,我无法增加。
两者同时存在也是可以的,就像这样:
003 dir_2
002 dir_2/subdir_2
001 dir_2/subdir_1
001 dir_1
我尝试了这个find -links 2
论点,但它只对-type d
不有效-type f
。