find命令在linux中的地位可謂舉足輕重,所以了解該命令的常用用法自然必不可少,下面就是經常用到的引數用法(參照了《linux shell指令碼攻略》):
1、-name:按[color=red]萬用字元[/color]匹配檔案(-iname不區分大小寫)。
示例:find /home/program/ -name "*.txt" -print
解釋:查詢/home/program目錄下的所有以「.txt」結尾的檔案,」-print「可省略。
更複雜一些,結合「-o」匹配多個檔案:find . \( -name "*.txt" -o -name "*.pdf" \)
解釋:找出當前目錄下的以」.txt「或者」.pdf「結尾的檔案,特殊字元」(「需要轉義。
2、-regex:按[color=red]正規表示式[/color]匹配檔案(-iregex不區分大小寫)。
示例:find /home/program -regex ".*\(\.sh\|\.py\)$"
解釋:查詢/home/program目錄下所有以」.sh「或者」.py「結尾的檔案(注意對特殊字元進行轉義)。
3、-path:按[color=red]萬用字元[/color]匹配檔案路徑(-ipath不區分大小寫)。
示例:find ./ -path "*/linux/*"
解釋:查詢當前目錄下含有」/linux/「的檔案路徑。
4、!:表示排除之意。
示例:find ./ ! -name "*.sh" -print
解釋:查詢當前目錄下不以」.sh「結尾的檔案。
5、-maxdepth depth:指定最大遍歷的深度,1表示只搜尋指定目錄一層,2表示最多再往下搜尋一層,依次類推(-mindepth depth:指定最小遍歷深度)。
示例:find ~/program/ -maxpath 1 -name "*nu*" -print
示例:find . -type s -print
解釋:搜尋當前檔案下的所有套接字檔案。
7、-atime、-mtime、-ctime:根據檔案時間進行搜尋。unix/linux檔案系統中的每乙個檔案都有三種時間戳,如下所示:
1)訪問時間(-atime):使用者最近一次訪問檔案的時間。
2)修改時間(-mtime):檔案內容最後一次被修改的時間。
3)變化時間(-ctime):檔案元資料(例如許可權或所有權)最後一次改變的時間。
-atime、-mtime、-ctime可作為find的時間選項,它們可以用整數值指定,單位是天。這些整數值通常還帶有 - 或 + :- 表示小於,+ 表示大於。
示例:1)列印出在最近7天內被訪問過的所有檔案:find . -type f -atime -7 -print
2)列印出恰好在7天前被訪問過的所有檔案:find . -type f -atime 7 -print
3)列印出訪問時間超過7天的所有檔案:find . -type f -atime +7 -print
類似地,我們可以根據修改時間,用-mtime進行搜尋,也可以根據變化時間,用-ctime進行搜尋。
8、-amin、-mmin、-cmin:用法同-atime、-mtime、-ctime,不過是以分鐘為單位。
示例:find ./ -type f ! -newer test.sh
解釋:搜尋出當前目錄下比test.sh[color=red]更舊[/color](還記得「!」嗎?)的普通檔案。
10、-size:根據檔案大小搜尋。
示例:1)搜尋大於2kb的檔案:find . -type f -size +2k
2)搜尋小於2kb的檔案:find . -type f -size -2k
3)搜尋大小等於2kb的檔案:find . -type f -size 2k
除了k之外,還可以用其他檔案大小單元:
1)b —— 塊(512位元組)。
2)c —— 位元組。
3)w —— 字(2位元組)。
4)k —— 1024位元組。
5)m —— 1024k位元組。
6)g —— 1024m位元組。
11、-delete:刪除搜尋出來的檔案。
示例:find ./ -type f -name "*.sh~" -delete
解釋:刪除當前目錄下所有的sh備份檔案。
12、-perm:按檔案許可權進行搜尋。
示例:find .. -type f -name "*.php" ! -perm 644
解釋:搜尋當前目錄下許可權不為(因為加了「!」)644的php檔案。
13、-user:搜尋屬於某使用者或uid的檔案。
示例:find /tmp -type f -user root -print
解釋:查詢/tmp目錄中屬於root的普通檔案。
14、-exec:對搜尋出的每個檔案執行命令(注意格式,尤其是末尾的「\;」)。
示例1:find . -type f -user root -exec chown test {} \;
解釋:將當前目錄下屬於root使用者的普通檔案的所有者更改為test使用者。
注意:在這個命令中,{}是乙個與-exec選項搭配使用的特殊字串。對於每乙個匹配的檔案,{}會被替換成相應的檔名。
示例2:find . -type f -mtime +10 -name "*.txt" -exec cp {} old \;
解釋:將10天前的 .txt檔案複製到old目錄中。
示例3:-exec能夠同printf結合來生成有用的輸出資訊。例如:
find . -type f -name "*.txt" -exec printf "text file: %s\n" {} \;
小計巧:在-exec引數中無法直接使用多個命令,它只能夠接受單個命令,不過我們可以把多個命令寫到乙個shell指令碼中(例如command.sh),然後在-exec中使用這個指令碼:
-exec ./commands.sh {} \;
15、-prune:跳過特定目錄或檔案。
示例:find devel/source_path \( -name ".git" -prune \) -o \( -type f -print \)
解釋:列印出不包括在.git目錄中的所有檔案。\( -name ".git" -prune \)的作用是用於進行排除,它指明了 .git目錄應該被排除在外,而\( -type f -print \)指明了需要執行的動作,這些動作需要被放置在第二個語句塊中。
find 命令 Linux命令篇 find命令
find name txt o name pdf print演示結果 find regex txt pdf iregex 忽略大小寫的正則 查詢所有非txt文字 find name txt print演示結果 列印出當前目錄的檔案 深度為1 find maxdepth 1 type f演示結果 5....
At命令攻略
at命令攻略 紅色表示注意事項 at說明 at 命令要求您是本地 administrators 組的成員。at 命令在執行命令前也不會自動載入命令解釋程式 cmd。如果正在執行可執行檔案 exe 則在命令開頭必須專門載入 cmd.exe,例如 cmd c dir c test.out。檢視已計畫的命...
find命令 echo命令
find命令 find 起始目錄 尋找條件 查詢的字串 操作 起始目錄 表示 home目錄 表示當前目錄 表示根目錄 尋找條件 常用的 name 按照名字查詢 perm 安裝許可權查詢 prune 不再當前指定的目錄下查詢 user 檔案屬主來查詢 group 檔案所屬組來查詢 nogroup 查詢...