Find

如何使用 find 命令搜尋多個副檔名

  • January 11, 2022

我可以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)'

引用自:https://unix.stackexchange.com/questions/15308