Find
如何使用 find 命令搜尋多個副檔名
我可以
jpg
使用以下方法獲取所有圖像:find . -name "*.jpg"
但是我怎樣才能將
png
文件添加到結果中呢?
-o
在不同參數之間使用標誌。
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
奇蹟般有效。注意括號與其內容之間必須有空格,否則將不起作用。
解釋:
-type f
- 只搜尋文件(不是目錄)\(
&\)
- 需要-type f
應用於所有參數-o
- 邏輯或運算符-iname
- 類似-name
,但匹配不區分大小寫
-o
您可以按照Shadur 的建議結合標準。請注意,-o
它的優先級低於並置,因此您可能需要括號。find . -name '*.jpg' -o -name '*.png' find . -mtime -7 \( -name '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
在 Linux 上,您可以使用
-regex
更簡潔的方式組合擴展。預設的正則表達式語法是 Emacs(基本的正則表達式加上一些擴展,例如\|
用於交替);有一個選項可以切換到擴展的正則表達式。find -regex '.*\.\(jpg\|png\)' find -regextype posix-extended -regex '.*\.(jpg|png)'
在 FreeBSD、NetBSD 和 OSX 上,您可以
-regex
將 with-E
用於擴展的正則表達式。find -E . -regex '.*\.(jpg|png)'