如何使用find和xargs查詢和處理檔案
find 是日常工具箱能強大、靈活的 行程式之一。它如它名字所暗示的:查詢符合你指定條件的檔案和目錄。藉助 -exec 或 -delete 之類的引數,你可以讓它對找到的檔案進行操作。 |
在 行提示系列的這一期中,你將會看到 find 命令的介紹,並學習如何使用內建命令或使用 xargs 命令處理檔案。
find 至少要加上查詢的路徑。例如,此命令將查詢(並列印)系統上的每個檔案:
find /
由於一切皆檔案,因此你會看到大量的輸出。這可能無法幫助你找到所需的內容。你可以更改路徑引數縮小範圍,但這實際上並沒有比使用 ls 命令更好。因此,你需要考慮要查詢的內容。
也許你想在家目錄中查詢所有 JPEG 檔案。 -name 引數允許你將結果限制為與給定模式匹配的檔案。
find ~ -name '*jpg'
但是等等!如果其中一些副檔名是大寫怎麼辦? -iname 類似於 -name,但不區分大小寫:
find ~ -iname '*jpg'
很好!但是 8.3 命名方案出自 1985 年。某些圖片的副檔名可能是 .jpeg。幸運的是,我們可以將模式使用“或”(-o)進行組合。括號需要轉義,以便使 find 命令而不是 程式嘗試解釋它們。
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 命令從標準輸入流中獲取引數,並基於它們執行命令。繼續使用上一節中的示例,假設你要將上週修改過的家目錄中的所有 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,你可以快速處理大量檔案。
via:
作者:Ben Cotton 選題:lujun9972 譯者:geekpi 校對:wxy
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2664506/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 命令列技巧:使用 find 和 xargs 查詢和處理檔案命令列
- linux 查詢檔案命令 findLinux
- python檔案查詢之find命令Python
- 如何使用 Find 和 Locate 在 Linux 中搜尋檔案Linux
- 使用並查集處理集合的合併和查詢問題並查集
- 查詢指定的檔案:find、locate、which、whereis
- Find命令查詢最近幾天修改的檔案
- 在蘋果Mac上如何查詢和刪除檔案?蘋果Mac
- Oracle 高水位查詢和處理方法彙總Oracle
- linux批次find查詢檔案並批次替換覆蓋該檔案Linux
- 除了find命令,還有這麼多檔案查詢命令!
- Find and Replace Pattern(C++查詢和替換模式)C++模式
- mybatis之sql查詢配置檔案resultType和resultMapMyBatisSQL
- Python之錯誤異常和檔案處理Python
- 使用 Python 處理 CSV 檔案Python
- Python如何處理檔案的?Python
- Python 如何處理大檔案Python
- OpenCV4影像處理--影像查詢表和顏色表OpenCV
- 檔案查詢
- 檔案批次查詢複製匯出,按檔名批次查詢檔案,按檔案內容批次查詢檔案
- 使用 sed 命令查詢和替換檔案中的字串的 16 個示例字串
- 使用sed 命令查詢和替換檔案中的字串的方法總結字串
- 10 Windows批處理之呼叫例程和bat檔案WindowsBAT
- 如何使用vi處理GB級別的大檔案
- 如何使用Rust查詢目錄中的所有 txt 檔案?Rust
- 前端如何處理xml配置檔案?前端XML
- 專業的本地檔案搜尋查詢器:Find Any File (FAF) for MacMac
- Linux常用命令之檔案查詢which、find、locate命令講解Linux
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- Linux 檔案查詢Linux
- 檔案查詢命令
- 設定Oralce啟動和停止的批處理檔案
- Python(簡單圖形和檔案處理)程式設計Python程式設計
- 在檔案上使用 SQL 查詢的示例SQL
- 3、Webserver如何處理動態檔案WebServer
- 如何在Linux中查詢一個檔案Linux
- 重複檔案查詢和磁碟整理工具:Tidy Up 5 for MacMac
- 在Linux中,如何使用grep命令查詢檔案中的內容?Linux