2016-08-30 378 views

回答

1

你的問題說:「找到的常規文件和目錄的數量」,因此只使用-type f是不正確的,因爲它會發現只有普通文件,不是目錄。您需要找到兩種類型:-type f -o -type d

另一個細節。 find也會找到當前目錄,並將其顯示爲第一個結果,因此您不需要執行+1。它已經包括在內了!

還使用-prune跳過以.(隱藏)開頭的文件和目錄。在這種情況下-o print是必要的。由於我們不需要以.開頭的文件或目錄,因此我們不能使用.作爲搜索路徑,否則我們將跳過所有內容,因爲所有結果都將以.開頭。改爲使用$PWD

find $PWD \(-type f -or -type d \) -name ".*" -prune -o -print | wc -l 

請注意,這將排除包含在隱藏目錄中的所有文件和目錄,即使這些文件和目錄不隱藏。舉例來說,像這樣的一個文件,將已排除:

/my/path/.hidden_dir/not_hidden_file 
+0

當你使用'-o'你需要在每個分支 – Barmar

+0

使用'-print'是沒有必要的,因爲它是已經默認行爲。 –

+0

當我使用'-o'時,我認爲默認是禁用的,但我錯了。 – Barmar