Linux中國

如何在 Linux 中使用 find

最近的一篇文章中,Lewis Cowles 介紹了 find 命令。

find 是日常工具箱中功能更強大、更靈活的命令行工具之一,因此值得花費更多的時間。

最簡單的,find 跟上路徑尋找一些東西。例如:

find /

它將找到(並列印出)系統中的每個文件。而且由於一切都是文件,你會得到很多需要整理的輸出。這可能不能幫助你找到你要找的東西。你可以改變路徑參數來縮小範圍,但它不會比使用 ls 命令更有幫助。所以你需要考慮你想要找的東西。

也許你想在主目錄中找到所有的 JPEG 文件。 -name 參數允許你將結果限制為與給定模式匹配的文件。

find ~ -name '*jpg'

可是等等!如果它們中的一些是大寫的擴展名會怎麼樣?-iname 就像 -name,但是不區分大小寫。

find ~ -iname '*jpg'

很好!但是 8.3 名稱方案是如此的老。一些圖片可能是 .jpeg 擴展名。幸運的是,我們可以將模式用「或」(表示為 -o)來組合。

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

你最近拍了很多照片,所以讓我們把它縮小到上周更改的文件。

find ~ ( -iname '*jpeg' -o -iname '*jpg' ) -type f -mtime -7

你可以根據文件狀態更改時間 (ctime)、修改時間 (mtime) 或訪問時間 (atime) 來執行時間過濾。 這些是在幾天內,所以如果你想要更細粒度的控制,你可以表示為在幾分鐘內(分別是 cminmminamin)。 除非你確切地知道你想要的時間,否則你可能會在 + (大於)或 - (小於)的後面加上數字。

但也許你不關心你的照片。也許你的磁碟空間不夠用,所以你想在 log 目錄下找到所有巨大的(讓我們定義為「大於 1GB」)文件:

find /var/log -size +1G

或者,也許你想在 /data 中找到 bcotton 擁有的所有文件:

find /data -owner bcotton

你還可以根據許可權查找文件。也許你想在你的主目錄中找到對所有人可讀的文件,以確保你不會過度分享。

find ~ -perm -o=r

這篇文章只說了 find 能做什麼的表面。將測試條件與布爾邏輯相結合可以為你提供難以置信的靈活性,以便準確找到要查找的文件。並且像 -exec-delete 這樣的參數,你可以讓 find 對它發現的內容採取行動。你有任何最喜歡的 find 表達式么?在評論中分享它們!

via: https://opensource.com/article/18/4/how-use-find-linux

作者:Ben Cotton 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國