--- title: 【Linux】計算資料夾下的檔案數 date: 2019-07-30 is_modified: false disqus: cynthiahackmd categories: - "資訊科技 › 環境設定與指令" tags: - "Linux/Unix" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 來數一數資料夾裡有多少個檔案? ❶、❷、❸、❹、❺、❻、❼ <!--more--> ## 包含子目錄中的檔案與隱藏檔案 ```shell= $ find ./ -type f | wc -l ``` <br> 若只想計算某特定副檔名的檔案數,則加上 `-name` ```shell= $ find ./ -type f -name *.py | wc -l ``` <br> 其中 `find ./ -type f` 是指找到此目錄下的所有一般文件。 <br> 而 `wc` 指令則是用於計算文件的 byte 數、字數或列數,`-l` 就是指定輸出列數。由於我們未指定文件名稱,所以指令會從輸入設備,也就是前一個指令的輸出結果,讀取數據。 ## 包含子目錄中的檔案,但不包含隱藏檔案 若是不想計算隱藏檔案與目錄的個數,畢竟我用了 git 它真的多到爆,可以用 `ls -lR` 取代 `find`: ```shell= $ ls -lR | grep "^-" | wc -l ``` <br> 計算某特定副檔名,則在 `ls` 指令後加上 ```shell= $ ls -lR *.py | grep "^-" | wc -l ``` <br> 其中 `ls -l` 就是列出詳細資料,而 `-R` 則是表明,若目錄下有仍有文件,則以下的文皆依序列出。在使用 `ls -l` 時,資訊的展示方式如下,可看到首碼若為 `d` 表目錄、為 `-` 則是文件: ``` drwxr-xr-x 8 Cynthia_Chuang cynthia-chuang 4096 12月 31 16:16 .git/ -rw-r--r-- 1 Cynthia_Chuang cynthia-chuang 1315 12月 9 09:49 .gitignore ``` <br> 在 `grep "^-"` 中後面的字串是 [Regular Expression](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Regular_Expressions#special-caret),是在宣告開頭字元匹配要 `-`,換句話說就是要濾出檔案。反之若是想計算有幾個資料夾,則下 ```shell= $ ls -lR | grep "^-d" | wc -l ``` ## 不包含子目錄中的檔案,不包含隱藏檔案 如果就單純從想算這一層有多少的檔案,直接用 `-l` ```shell= $ ls -l | grep "^-" | wc -l ``` <br> 想知道檔案+目錄有多少個 ```shell= $ ls -l | grep "^[-d]" | wc -l ``` ## 參考資料 1. [Linux Ubuntu 計算資料夾下的檔案數|小賴的實戰記錄](https://dotblogs.com.tw/newmonkey48/2012/12/13/85630) 2. [Linux wc命令|菜鸟教程](https://www.runoob.com/linux/linux-comm-wc.html) 3. [Linux ls命令|菜鸟教程](https://www.runoob.com/linux/linux-comm-ls.html) <br><br> > **本文作者**: 辛西亞.Cynthia > **本文連結**: [辛西亞的技能樹](https://cynthiachuang.github.io/Count-Number-of-Files-in-Linux) / [hackmd 版本](https://hackmd.io/@CynthiaChuang/Count-Number-of-Files-in-Linux) > **版權聲明**: 部落格中所有文章,均採用 [姓名標示-非商業性-相同方式分享 4.0 國際](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en) (CC BY-NC-SA 4.0) 許可協議。轉載請標明作者、連結與出處!