find ~ \( -iname 'jpeg' -o -iname 'jpg' \)
更進一步。如果你有一些以 jpg
結尾的目錄怎麼辦?(我不懂你為什麼將目錄命名為 bucketofjpg
而不是 pictures
?)我們可以加上 -type
引數來僅查詢檔案:
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f
或者,也許你想找到那些名字奇怪的目錄,以便之後可以重新命名它們:
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d
最近你拍攝了很多照片,因此使用 -mtime
(修改時間)將範圍縮小到最近一週修改過的檔案。 -7
表示 7 天或更短時間內修改的所有檔案。
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
使用 xargs 進行操作
xargs
命令從標準輸入流中獲取引數,並基於它們執行命令。繼續使用上一節中的範例,假設你要將上週修改過的家目錄中的所有 JPEG 檔案複製到 U 盤,以便插到電子相簿上。假設你已經將 U 盤掛載到 /media/photo_display
。
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7 -print0 | xargs -0 cp -t /media/photo_display
這裡的 find
命令與以前的版本略有不同。-print0
命令讓輸出有一些更改:它不使用換行符,而是新增了一個 null
字元。xargs
的 -0
(零)選項可調整解析以達到預期效果。這很重要,不然對包含空格、引號或其他特殊字元的檔名執行操作可能無法按預期進行。對檔案採取任何操作時,都應使用這些選項。
cp
命令的 -t
引數很重要,因為 cp
通常要求目的地址在最後。你可以不使用 xargs
而使用 find
的 -exec
執行此操作,但是 xargs
的方式會更快,尤其是對於大量檔案,因為它會單次呼叫 cp
。
了解更多
這篇文章僅僅是 find
可以做的事情的表面。 find
支援基於許可權、所有者、存取時間等的測試。它甚至可以將搜尋路徑中的檔案與其他檔案進行比較。將測試與布林運算相結合,可以為你提供驚人的靈活性,以精確地找到你要查詢的檔案。使用內建命令或管道傳遞給 xargs
,你可以快速處理大量檔案。