Linux命令列find實用小技巧

2021-04-23 16:14:20 字數 2059 閱讀 2444

命令列一直是linux使用者用來解決問題的首要選擇。當需要做某件事時,你只要想好如何去做,從那時起你就知道該如何做了。

不過很少有人花些時間系統地了解處理工具在處理過程中的輸入和輸出。因此對於最基本實用工具的功能可能並不是很了解。在本文中,我們將討論所有shell工具箱中都有的乙個重要工具:find實用工具。

正如它的名字所表示的,find是在磁碟中查詢滿足給定標準的檔案和目錄的應用程式。預設情況下,它從當前目錄開始,向下掃瞄所有子目錄。find基於各種不同的檔案屬性來進行查詢,而且可以對查詢結果執行某種操作,通常是對每個查詢結果執行一些程式。

讓我們來看一些例子:首先,為了在當前目錄或子目錄中查詢所有html檔案,我們可以使用:

find -name "*.html" -type f

該命令有兩個測試條件,

第乙個,「-

name 」用於檢驗搜尋過程中的每個檔名,如果你需要對大小寫敏感,可以使用「-iname 」代替。

第二個引數是「-type 」,它用於指定你感興趣的檔案型別。

"f "表示我們查詢的是普通檔案

"d "表示目錄或使用

"l "表示符號連線。在find 手冊中可以看到該工具的所有選項。

在上面的這個例子中,因為我們要在當前目錄中搜尋,所以沒有指定路徑。你可以從你的系統中的任何目錄開始搜尋,例如,你知道html檔案存放在兩個位置之一中,那麼我們就可以通過指定乙個開始搜尋點使查詢更快更準確。

find /var/www

/home/lucy/public_html      -name   "*.html" -type f

這個查詢從web伺服器的根目錄開始,搜尋我的html根目錄和它的子目錄,希望能夠得到我們想要的結果,而不是像web瀏覽器快取或html幫助檔案。

預設情況下,find遍歷所有子目錄,但是你可以通過指定最大深度來控制這個行為。在前面的例子中,如果我們只想搜尋這兩個目錄不想搜尋下一層,你可以添 加「-maxdepth 1」到命令中。設定最大深度為0表示只檢驗命令列中的給定檔案。同樣,你可以設定最小深度,從而避免搜尋位於根目錄的檔案。

find 的另乙個應用是搜尋屬於某個給定使用者的檔案,因此為了搜尋我的系統中所有屬於我的檔案,我使用以下命令:

find / -user lucy

同樣可以搜尋基於組使用者的檔案,使用"-group "引數。

另外的測試分類與時間相關,我們可以用基於時間的方式來搜尋檔案,可以分別使用

"-ctime" 最後建立時間 c reate time(更正:應該為change time,多謝 qianlongwydh )

"-atime" 最後訪問時間    a ccess time

"-mtime" 最後修改時間    m odify time

例如要搜尋前天建立的檔案,可以使用:find -ctime -1

注意1前面的「-」表示我們是從今天向以前的日期範圍搜尋。

如果你需要更精確地搜尋,可以使用分鐘變數「-cmin」,「-amin」和「-mmin」。如果你剛犯了乙個錯誤但不確定會影響到那些檔案,這很簡單可以使用如下查詢:find -mmin -5

find對檔案執行的標準行為是顯示出檔名,這就是為什麼如果你跟蹤結果,就會看到一系列檔名的原因。如果你想使用這些結果作為另外乙個過濾器的輸入的話,這將會十分有用。但是如果你需要結果的更多資訊,你可以令find輸出與ls –l 同樣的結果:

find -user lucy -iname "*.html" –ls

這個命令將會返回檔案許可權和時間資訊。

最後,你可以通過使用「-exec」引數,來讓find命令對每個搜尋結果執行任何程式。下面的程式將會刪除你的home目錄中所有擴充套件名為「.tmp」的檔案。

find -name ".tmp" -exec rm {} ;

上面兩個大括號將會被相應的檔名代替,反斜槓用來告訴find何時命令結束。find常和chmod結合使用快速改變大量檔案的檔案許可權,或者和 grep與sed結合使用來選擇性的搜尋或使用正規表示式修改文字。這僅是與find相關使用技巧的冰山一角,使用它作為乙個指令碼的輸入,你可以讓費時的 任務自動完成,例如清除一年內沒有訪問的檔案,或者自動備份修改的檔案。find的這種強大更能意味著它仍將是linux使用者用來處理任務的最好工具之 一。

git實用命令列

ssh keygen t rsa b 4096 c your email example.com 配置公鑰 git diff 5d57640f0689df210bbae44b5a24dad78e8e9f06 a26566ca2fc28fc642c90bc88acb0fc54c220f88 檢查檔案是...

命令列小技巧

1,按住shift,滑鼠右鍵就會有開啟powershell的選項,不用什麼特殊操作。2,新增滑鼠右鍵開啟cmd的選項 windows registry editor version 5.00 hkey classes root directory background shell opencmdhe...

linux命令列中的小橫線( )

今天在做批量重新命名的時候發現下列報錯 mv invalid option 6 try mv help for more information.調查發現是因為檔案中有帶有 的名字比如 這個和命令帶的引數的標記是一樣的,如ls ltr 解析的時候會錯誤的把 ltr 解析為引數,所以也就無法列出 lt...