Shell
目錄中文件類型的遞歸統計?
我為一個轉換項目做了一個網站抓取。我想對其中的文件類型進行一些統計——例如,400 個
.html
文件、100 個.gif
等。有什麼簡單的方法可以做到這一點?它必須是遞歸的。**編輯:**使用 maxschhelpzig 發布的腳本,由於我已經抓取的網站架構,我遇到了一些問題。一些文件的名稱
*.php?blah=blah&foo=bar
帶有各種參數,因此它們都被視為唯一的。所以解決方案需要考慮*.php*
是所有相同的類型,可以這麼說。
您可以使用
find
anduniq
為此,例如:$ find . -type f | sed 's/.*\.//' | sort | uniq -c 16 avi 29 jpg 136 mp3 3 mp4
命令說明
find
遞歸列印所有文件名
sed
從每個文件名中刪除前綴,直到文件副檔名
uniq
假設已排序輸入
-c
進行計數(如直方圖)。
使用 zsh:
print -rl -- **/?*.*(D.:e) | uniq -c |sort -n
該模式
**/?*.*
以遞歸方式匹配目前目錄及其子目錄中所有具有副檔名的文件。glob 限定符D
甚至zsh
可以遍歷隱藏目錄並考慮隱藏文件,只.
選擇正常文件。歷史修飾符僅保留文件副檔名。print -rl
每行列印一個匹配項。uniq -c
計算連續相同的項目(全域結果已經排序)。最後呼叫sort
按使用計數對擴展進行排序。