2015-05-26 50 views
0

我是Stack Overflow的新手,並且是Linux的新手。我一直在試圖父目錄中過濾特定的文件,它是使用下面的命令爲例孩子:Unix - Count遞歸的文件類型數量

ls -R | grep '*.jpg' | wc -l

尋找單個文件時,我已經發現了偉大的,但我需要在這樣做一個月的基礎上,並尋找更快的方式列出一個命令的幾種類型。我故意要排除隱藏的文件。

我都試過,但無濟於事 - Count number of specific file type of a directory and its sub dir in mac

我已經看到list, find, tree, echo等網絡上不同的方法,因此任何幫助,將不勝感激,如果有這樣做的更好的辦法這比我目前的做法,那麼這不是一個問題,因爲我願意接受建議。我只是不確定目前皮膚最好的方法是什麼!

非常感謝您

回答

0

你可以有一個以上的模式grep過濾器。您應該瞭解linux中的manpages,只需在終端輸入man grep即可看到該程序的功能和操作方式。

對於你的問題,你可以例如使用此來篩選PNG和JPEG文件(ingoring區分大小寫,從而得到PNG和PNG文件):

ls -R | grep -i '*.jpg\|*.png' | wc -l 

-i將忽略名稱的情況下,\|是或統合。

+0

-i標誌適用於我原來的命令,但運行** ls -R | grep -i'* .rtf \ | * .txt'| wc -l **返回我0結果。它看起來像或是原因,我測試過使用我知道包含結果的不同文件類型。 – Pampa

2

你可以在find的幫助下做到這一點,因爲它是從你最初發布的鏈接中提到的。 只是這樣的事情:

find . -name \*.jpg -or -name \*.png -not -path \*/\.\* | wc -l 
+0

這很好用,但它包含了目錄中的隱藏文件,我不想要。 – Pampa

+0

@Pampa,看看更新的答案。 – Dieselist

+2

如果您希望大寫和小寫文件擴展名匹配,您還可以使用'-iname'而不是'-name'來忽略大小寫。 – mark4o

0

謝謝大家的貢獻,如果這被證明是有用的人在那裏,我已經從一個開發商朋友誰是好心看着這對我來說,什麼一些幫助我發現,最適合在我的具體情況如下:

find . -type f \(-iname "*.jpg" ! -iname ".*.png" ! -path "*/.HSResource/*" \) |wc -l 

這跳過的資源文件夾和隱藏文件,似乎回到了我正確的結果。