IC數字前端設計開發16 ([linux命令] find)
阿新 • • 發佈:2018-12-30
Linux find命令是所有Linux命令中最有用的一個,它允許按名稱、型別、使用者、許可權、時間等實時查詢檔案,還能對查詢到的檔案執行檢視、刪除、移動等操作。
一、find官方手冊
使用man find檢視linux find命令的使用方法如下:
NAME find -- walk a file hierarchySYNOPSIS find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]...查詢當前目錄及子目錄下素有檔案和資料夾
二、按檔名查詢
引數 | 描述 |
---|---|
-name | 按檔名查詢 |
-iname | 按檔名查詢(不區分大小寫) |
-regex | 按正則條件查詢 |
使用範例如下:
find . -name '*.jpg' -print #按名稱查詢當前資料夾下的.jpg檔案find . -regex '.*/.jpg' #按正則查詢當前資料夾下的.jpg檔案注:
-print:假設find指令的回傳值為true,就將檔案或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字串;
-print0:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行;
三、按檔案從屬關係查詢
find . -user 'Jerry' -print #查詢當前目錄及子目錄下所有使用者名稱為Jerry的檔案其他從屬關係
從屬符號 | 描述 |
---|---|
-user | 按使用者名稱查詢 |
-group | 按分組組名查詢 |
-nouser | 查詢沒有屬主的檔案 |
-nogroup | 查詢沒有屬組的檔案 |
四、按檔案型別查詢
find . -type f -print #查詢當前目錄及子目錄下所有的普通檔案find . -type d -print #查詢當前目錄及子目錄下所有的目錄所有可查詢的型別如下:
型別 | 功能 |
---|---|
f | 普通檔案 |
d | 資料夾 |
b | 塊裝置檔案 |
c | 字元裝置檔案 |
l | 連線檔案 |
s | 套接字檔案 |
p | 管道檔案 |
五、按檔案大小查詢
find . -size 1M -print #精確查詢當前目錄及子目錄下大小為1M的檔案/資料夾find . -size -1M -print #查詢當前目錄及子目錄下小於1M的檔案/資料夾find . -size +1M -print #查詢當前目錄及子目錄下大於1M的檔案/資料夾檔案大小單位:
單位符號 | 描述 |
---|---|
b | 塊(512位元組) |
c | 位元組 |
w | 字(2位元組) |
k | 千位元組 |
M | 兆位元組 |
G | 吉位元組 |
六、按時間查詢
find . -mtime 1 -print #精確查詢當前目錄及子目錄下前一天修改的檔案find . -mtime +1 -print #精確查詢當前目錄及子目錄下一天前修改的檔案find . -mtime -1 -print #精確查詢當前目錄及子目錄下一天內修改的檔案時間選項如下:
時間型別 | 描述 |
---|---|
-atime | 以檔案/資料夾訪問時間(天)查詢 |
-mtime | 以檔案/資料夾修改時間(天)查詢 |
-ctime | 以檔案/資料夾資料元(如許可權等)修改時間(天)查詢 |
-atime | 以檔案/資料夾訪問時間(分鐘)查詢 |
-mtime | 以檔案/資料夾修改時間(分鐘)查詢 |
-ctime | 以檔案/資料夾資料元(如許可權等)修改時間(分鐘)查詢 |
-newer file | 以file檔案為條件,查詢比其新的檔案/資料夾 |
-not -newer file | 以file檔案為條件,查詢比其老的檔案/資料夾 |
七、按許可權查詢
find . -perm 644 -print #精確查詢當前目錄及子目錄下ugo許可權為644的檔案/資料夾find . -perm +111 -print #精確查詢當前目錄及子目錄下ugo使用者中任意一類(或)有可執行許可權的檔案/資料夾find . -perm -111 -print #精確查詢當前目錄及子目錄下ugo使用者都擁有(與)可執行許可權的檔案/資料夾注:檔案有owner(user)、group、others三種身份,分別用u、g、o表示,用a同時代表三種身份,用r、w、x代表讀、寫、執行三種許可權,每種身份的許可權按rwx順序用一個8進位制數表示,如777表示同時擁有讀、寫和可執行許可權。
八、組合條件查詢
find . -name '*.gif' -a -perm 644 #查詢當前目錄及子目錄下格式為gif且許可權為644的檔案/資料夾find . -name '*.gif' -o -name '*.jpg' #查詢當前目錄及子目錄下格式為gif或jpg的檔案/資料夾find . -not -name '*.gif' #查詢當前目錄及子目錄下格式不為gif的檔案/資料夾find . -name '*.jpg' -o /( -name '*.txt' -a -empty /) #帶括號的複雜查詢, 查詢jpg檔案或空txt檔案組合符號
組合符號 | 描述 |
---|---|
-a | 與,預設組合條件 |
-o | 或 |
-not (!) | 非 |
九、查詢結果處理
find . -name '*.txt' -exec grep 'test' {} /; #查詢當前目錄及子目錄下txt檔案並查詢檔案中包含test的行查詢結果處理動作:
處理操作 | 描述 |
---|---|
輸出到標準輸出,預設操作 | |
-ls | 以ls長檔案形式輸出到標準輸出,預設操作 |
-delete | 刪除查詢到的檔案/資料夾 |
-fls /path/filename | 以ls長檔案形式儲存到file中 |
-ok COMMAND {} /; | 將查詢到的檔案傳遞給COMMAND命令,有提示 |
-exec COMMAND {} /; | 將查詢到的檔案傳遞給COMMAND命令,無提示 |
十、其他查詢
find . -empty -print #查詢當前目錄及子目錄下的空檔案/資料夾find . -empty -maxdepth 2 #查詢當前目錄及子目錄下的空檔案/資料夾, 且查詢目錄層級至多2級find . -empty -mindepth 1 #查詢當前目錄及子目錄下的空檔案/資料夾, 且查詢目錄層級至少1級