[英]Find Command with multiple file extensions
我正在瀏覽許多子目錄,找到所有以.JPG .jpg和.png結尾的文件,並將它們復制到一個單獨的目錄中,但是現在僅找到.JPG
有人可以解釋我在做什么錯嗎?
find /root/TEST/Images -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -exec cp -t /root/TEST/CopiedImages {} +
您必須對-o
條件進行分組,因為-a
,最后一個-name '*.JPG'
和-exec
之間的隱式AND具有更高的優先級 :
find /root/TEST/Images \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' \) -exec cp -t /root/TEST/CopiedImages {} +
分組是用括號完成的,但是由於它們的特殊含義是shell,因此必須轉義(或用引號引起來)。
與此無關,可以通過將jpg
和JPG
過濾器與不區分大小寫的-iname
組合使用來縮短整體表達式(如注釋中所述):
find /root/TEST/Images \( -name '*.png' -o -iname '*.jpg' \) -exec cp -t /root/TEST/CopiedImages {} +
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.