Find
查找具有目錄路徑的文件排除子目錄
如何使用
find
遍歷目錄,但不遞歸到其子目錄?我試過
-prune
了,但它不起作用。而且別無選擇-maxdepth
。find /opt/projectname/bin -type f /opt/projectname/bin -prune -o -print find: missing conjunction
/opt/projectname/bin/file_1_is_printed /opt/projectname/bin/file_2_is_printed /opt/projectname/bin/directory_within_bin/some_file_should_not_be_printed /opt/projectname/bin/directory_2_within_bin/some_file_2_should_not_be_printed /usr/bin/find: find.c $Date: 2011/08/12 15:04:36 $Revision: r11.31/4 PATCH_11.31 (PHCO_42158) libcpio.c $Date: 2008/05/27 16:08:10 $Revision: r11.31/2 PATCH_11.31 (PHCO_36666) $Revision: @(#) find R11.31_BL2011_0923_2 PATCH_11.31 PHCO_42158
這個問題不是重複的問題。這裡沒有 GNU。儘管這個問題可能是一個重複的問題,但發佈在這些問題上的答案要求安裝 GNU 工具。因此,如果這裡的答案有助於解決,這是一個獨特的執行緒。
錯誤“缺少連詞”是因為您在 之後重複了目錄名稱
-type f
,並且find
不知道如何解析。為避免遍歷子目錄,您需要修剪目錄,而不是正常文件。但是,您不能修剪起始目錄,否則
find
只會處理它。辨識起始目錄的一種簡單方法是將其名稱設置為.
.find /opt/projectname/bin/. -name . -o -type d -prune -o -print
解釋:
-name .
— 如果名字是.
,$$ do nothing $$- 否則:
-type d
- 如果文件是目錄,則不要深入其中- 否則:列印路徑