Linux

獲取目錄中的所有副檔名及其各自的文件數

  • December 18, 2019

獲取目錄的所有副檔名:簡單。獲取特定副檔名的文件計數:簡單。

但是獲取所有文件副檔名及其各自的文件數是在暗示我。

例如。

+ 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

引用自:https://serverfault.com/questions/183431