Bash
使用 find,如何像 ls -F 一樣進行分類?(帶有斜杠的目錄)
我
find
用來獲取文件列表,然後用 grep 對其進行路徑匹配:$ find pc* | grep -i arthur pc6/arthurv/untitled-2.py pc6/arthurv/untitled-3.py pc6/arthur.py pc9/Arthur 4C pc9/Arthur 4C/untitled-1.py pc9/Arthur 4C/untitled-2.py
我想做喜歡
ls -F
並為每個目錄附加一個/
。或者,如何查找以顯示所有匹配不區分大小寫的目錄
arthur
?
您可以在
find
表達式中使用析取來實現條件處理;使用 GNUfind
:find pc* -type d -printf "%p/\n" -o -print
將在以匹配“pc*”的文件和目錄開頭的路徑中查找所有內容,並列印它們的名稱,如果它們是目錄,則後跟一個“/”。
其工作方式如下:
pc*
指定開始的路徑;-type d
匹配目錄;-printf "%p/\n"
列印目前處理文件的路徑,後跟“/”和換行符;因為它緊隨其後-type d
,所以只有在匹配時才會執行-type d
(有一個隱式連詞);-o
引入析取:如果它前面的表達式不匹配,則它後面的表達式將被評估(並且它前面的表達式-type d -printf "%p/\n"
在這裡,因為連接比析取具有更高的優先級);
find
可以使用其他表達式來顯示所有匹配不區分大小寫的“arthur”的目錄:find . -type d -iname "*arthur*"