Linux find 命令詳解

來源:互聯網
上載者:User

find path -option [-print] [-exec -ok command] {} \;find命令的參數:pathname: find命令所尋找的目錄路徑。例如用.來表示目前的目錄,用/來表示系統根目錄。-print: find命令將匹配的檔案輸出到標準輸出。-exec: find命令對匹配的檔案執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。#-print 將尋找到的檔案輸出到標準輸出#-exec   command   {} \;      —–將查到的檔案執行command操作,{} 和 \;之間有空格#-ok 和-exec相同,只不過在操作前要詢使用者

1、根據檔案名稱或Regex匹配搜尋

選項-name的參數指定檔案名稱所必須匹配的字串。例:匹配所有以.txt結尾的檔案名稱$find /root/ -name "*.txt" -print選項-iname,該選項的作用和-name類似,不過匹配的時候忽略名字的大小寫。匹配多個條件,可以使用OR條件操作$find . /root/ \( -name "*.txt" -o -name "*.pdf" \) -print選項-path的參數可以使用萬用字元來匹配檔案路徑或檔案。$find . -path "*include/apu*"       ./httpd-2.2.22/srclib/apr-util/include/apu_version.h./httpd-2.2.22/srclib/apr-util/include/apu.hw./httpd-2.2.22/srclib/apr-util/include/apu_errno.h./httpd-2.2.22/srclib/apr-util/include/apu.hnw選項-regex的參數和-path類似,不過-regex是基於Regex來匹配檔案路徑。下面命令匹配.py或.sh檔案$find . -regex ".*\(\.py\|\.ssh\)$"./.ssh./httpd-2.2.22/srclib/apr/build/gen-build.py
2、否定參數find也可以使用"!"否定參數的含義。例如:匹配所有不是以.txt結尾的檔案名稱$find . ! -name "*.txt"
3、基於目錄的深度搜尋使用-maxdepth和-mindepth參數來限制find命令遍曆目錄的深度。例:列出目前的目錄下的所有普通檔案。$find . -maxdepth 1 -type f-maxdepth和-mindepth應當作為find的第三個參數出現,如果作為第四個或之後的參數,則會影響find的效率。
4、根據檔案的類型搜尋使用-type對檔案搜尋進行過濾,以下是type參數對應檔案的類型普通檔案  f、符號檔案 l、目錄 d、字元裝置 c、塊裝置 b、通訊端 s、Fifo p。例:列出所有目錄$find . -type d -print
5、根據檔案時間進行搜尋系統每個檔案有三種時間戳記,如下所示:訪問時間(-atime):使用者最近一次訪問時間修改時間(-mtime):檔案內容最後一次修改時間。變化時間(-ctime):檔案中繼資料(例如許可權或所有權)最後一次改變時間列印出最近7天有過訪問的所有檔案$find . type f -atime -7 print列印出訪問時間超過7分鐘的所有檔案$find . type f -admin -7 print
6、基於檔案大小的搜尋$find . -type f -size +20k#大於20KB的檔案$find . -type f -size -20k#小於20KB的檔案$find . -type f -size 20k#等於20KB的檔案
7、刪除匹配的檔案-delete可以刪除find尋找到的.swp檔案$find . -type f -name "*.swp" -delete刪除目前的目錄下的所有的.swp檔案
8、基於檔案許可權和所有權的匹配例:列印出許可權為644的檔案$find . -type f -perm 644 -print尋找沒有執行許可權的PHP檔案$find . -type f -name "*.php" ! -perm 644 -print列印出使用者slynux所擁有的檔案:$find . -type f -user slynux -print
9、結合find執行命令或動作藉助選項-exec與其他命令結合。樣本:#find . -type f -user mysql -exec chown root {} \;在目前的目錄下修改屬於使用者mysql的檔案為屬於root使用者。#find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;將10天前的.txt檔案複製到OLD目錄下
10、find跳過特定的目錄列印出不包過在.svn的目錄的所有檔案的名稱#find . \( -name ".svn" -prune \) -o \( -type f -print\)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.