新聞中心
find是Unix/Linux命令行工具箱中最實用的工具之一。xargs是它最搭配的Linux命令使用find和xargs可以非常高效的處理文件。

成都創(chuàng)新互聯公司-專業(yè)網站定制、快速模板網站建設、高性價比沈北新網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沈北新網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋沈北新地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
查找文件
find 至少要加上查找的路徑。例如,此命令將查找(并打?。┫到y(tǒng)上的每個文件:
find /
由于一切皆文件,因此你會看到大量的輸出。這可能無法幫助你找到所需的內容。你可以更改路徑參數縮小范圍,但這實際上并沒有比使用 ls 命令更好。因此,你需要考慮要查找的內容。 也許你想在家目錄中查找所有 JPEG 文件。 -name 參數允許你將結果限制為與給定模式匹配的文件。
find ~ -name '*jpg'
但是等等!如果其中一些擴展名是大寫怎么辦? -iname 類似于 -name,但不區(qū)分大小寫:
find ~ -iname '*jpg'
很好!但是 8.3 命名方案出自 1985 年。某些圖片的擴展名可能是 .jpeg。幸運的是,我們可以將模式使用“或”(-o)進行組合。括號需要轉義,以便使 find 命令而不是 shell 程序嘗試解釋它們。
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 命令從標準輸入流中獲取參數,并基于它們執(zhí)行命令。繼續(xù)使用上一節(jié)中的示例,假設你要將上周修改過的家目錄中的所有 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(零)選項可調整解析以達到預期效果。這很重要,不然對包含空格、引號或其他特殊字符的文件名執(zhí)行操作可能無法按預期進行。對文件采取任何操作時,都應使用這些選項。 cp 命令的 -t 參數很重要,因為 cp 通常要求目的地址在最后。你可以不使用 xargs 而使用 find 的 -exec 執(zhí)行此操作,但是 xargs 的方式會更快,尤其是對于大量文件,因為它會單次調用 cp。
了解更多
這篇文章僅僅是 find 可以做的事情的表面。 find 支持基于權限、所有者、訪問時間等的測試。它甚至可以將搜索路徑中的文件與其他文件進行比較。將測試與布爾邏輯相結合,可以為你提供驚人的靈活性,以精確地找到你要查找的文件。使用內置命令或管道傳遞給 xargs,你可以快速處理大量文件。
新聞名稱:使用find和xargs高效的處理文件
文章網址:http://www.dlmjj.cn/article/dhspscp.html


咨詢
建站咨詢
