您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關linux中怎么使用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
命令而不是 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
命令從標準輸入流中獲取參數,并基于它們執行命令。繼續使用上一節中的示例,假設你要將上周修改過的家目錄中的所有 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
。
感謝各位的閱讀!關于“linux中怎么使用find和xargs查找和處理文件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。