Shell

目錄中文件類型的遞歸統計?

  • June 11, 2021

我為一個轉換項目做了一個網站抓取。我想對其中的文件類型進行一些統計——例如,400 個.html文件、100 個.gif等。有什麼簡單的方法可以做到這一點?它必須是遞歸的。

**編輯:**使用 maxschhelpzig 發布的腳本,由於我已經抓取的網站架構,我遇到了一些問題。一些文件的名稱*.php?blah=blah&foo=bar帶有各種參數,因此它們都被視為唯一的。所以解決方案需要考慮*.php*是所有相同的類型,可以這麼說。

您可以使用findanduniq為此,例如:

$ 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按使用計數對擴展進行排序。

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