find命令攻略

2021-09-02 16:39:16 字數 3152 閱讀 2877

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 查詢...