Linux
獲取目錄中的所有副檔名及其各自的文件數
獲取目錄的所有副檔名:簡單。獲取特定副檔名的文件計數:簡單。
但是獲取所有文件副檔名及其各自的文件數是在暗示我。
例如。
+ dir + abc.txt + def.txt + abc.pdf * def.pov
應該返回類似:
.txt 2 .pdf 1 .pov 1
本練習的目的是我想找出某個目錄中流行的文件副檔名。
提前致謝
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n 1 .6 1 .cache 1 .noconf 1 .php 1 .sl 2 .bin 2 .el 2 .tdb 4 .baseA 4 .baseB 4 .dat 4 .DB 27 .db 221 .deb
這是解釋:
find ./ -type f
只查找文件,不查找目錄
grep -E ".*\.[a-zA-Z0-9]*$"
過濾帶副檔名的文件
sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'
刪除路徑和文件名,只保存副檔名
sort | uniq -c | sort -n
排序,唯一和排序
由於您使用的是 Linux (gnu grep),因此現在是使用 Perl REs (PCRE)
-P
和 grep-o
選項的好時機。將@bindbn 的答案作為一個很好的候選人:find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n