linux命令 find使用梳理

2021-08-07 17:17:40 字數 3693 閱讀 2560

linux find命令是所有linux命令中最有用的乙個,它允許按名稱、型別、使用者、許可權、時間等實時查詢檔案,還能對查詢到的檔案執行檢視、刪除、移動等操作。

一、find官方手冊

使用man find檢視linux find命令的使用方法如下:

name

find -- walk a file hierarchy

synopsis

find [-h | -l | -p] [-exdsx] [-f path] path ... [expression]

find [-h | -l | -p] [-exdsx] -f path [path ...] [expression]

...

查詢當前目錄及子目錄下素有檔案和資料夾

find .
二、按檔名查詢

引數描述

-name

按檔名查詢

-iname

按檔名查詢(不區分大小寫)

-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的檔案/資料夾

#查詢當前目錄及子目錄下格式為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的行

查詢結果處理動作:

處理操作

描述-print

輸出到標準輸出,預設操作

-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級

linux中find命令使用

find pathname options print exec ok pathname 表示find命令查詢的路徑 option 表示find命令按各種規則來查詢,這裡規則很多,如按 name 命名 user 使用者名稱 perm 許可權 等等。type 目標型別,如檔案f,目錄d等 print ...

Linux中find命令使用

find命令的一般形式為 find pathname options print exec ok 引數說明如下 pathname find命令所查詢的目錄路徑。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執行該引數所給出的shell命令,在這之後的命令的形式...

linux命令 grep使用梳理

grep globally search a regular expression and print 以正規表示法進行全域查詢並列印,grep是乙個最初用於unix作業系統的命令列工具,在給出檔案列表或標準輸出後,grep會對匹配乙個或多個正規表示式的文字進行搜尋,並只輸出匹配 或不匹配 的行或文...