Linux基礎find命令
阿新 • • 發佈:2019-01-01
find命令簡介
find命令主要用於在某個目錄下面尋找某個檔案。
find命令的標準命令格式:find [path…] -name [pattern]
find命令允許我們同時指定多個要搜尋的資料夾。
find命令簡單例項
# 當前目錄下面我新建了三個資料夾 -1F表示沒行展示一個 -> ls -1F test1/ test2/ test3/ # test1資料夾下面有個first檔案 -> cd test1 -> ls first # test2資料夾下面有個first.txt檔案 -> cd test2 -> ls test1.txt # 開始搜尋 Linux中“.”號表示當前目錄,“..”表示父目錄 -> find . -name first ./test1/first -> find test test1 test2 test3 -name first find: ‘test’: No such file or directory test1/first
總結:find會從左到右依次搜尋每一個資料夾,如果該資料夾存在,則搜尋;如果該資料夾不存在,則報錯,並繼續搜尋下一個資料夾,直到所有的資料夾都搜尋完成為止!
find指定搜尋物件的型別
命令模版:find [path…] -type [param] -name [pattern]
選項 | 釋義 |
---|---|
d | 資料夾 |
f | 普通檔案 |
l | 符號連結檔案 |
b | 塊裝置 |
c | 字元裝置 |
p | 管道檔案 |
s | socket套接字 |
find指定檔名字尾
# 使用*.txt這樣的萬用字元表達法
-> find . -name "*.txt"
./test2/test1.txt
find按使用者(屬主)和群組(屬組)來搜尋
# 首先看一下我的group —> ls -1F /home admin/ git/ # 使用者git,群組git # -user選項指定使用者 -group選項指定群組 -> find . -type f -user git -group git ./test1/first ./test2/test1.txt
find按時間來搜尋檔案
選項 | 釋義 |
---|---|
-mmin/-mtime +n | 表示在n分鐘/天以前檔案被修改過 |
-mmin/-mtime -n | 表示在n分鐘/天以內檔案被修改過 |
-cmin/-ctime +n | 表示在n分鐘/天以前檔案狀態有過改變 |
-cmin/-ctime -n | 表示在n分鐘/天以內檔案狀態有過改變 |
-amin/-atime +n | 表示在n分鐘/天以前檔案被訪問過 |
-amin/-atime -n | 表示在n分鐘/天以內檔案被訪問過 |
選項 | 釋義 |
---|---|
-newer file | 搜尋修改時間比file檔案的修改時間近的 |
-anewer file | 搜尋訪問時間比file檔案的訪問時間近的 |
-cnewer file | 搜尋狀態變化時間比file檔案的狀態變化時間近的 |
find的newerXY選項
針對兩個物件的不同型別的時間進行比較,比如要搜尋“訪問時間”比指定檔案的“修改時間”更近的檔案。
在使用-newerXY選項時,一定要指定一個引數作為比較的物件,這個引數可以是一個具體的檔案,也可以是一個具體的時間值,例如2018-08-12.
這個選項裡的X和Y,其實是兩個佔位符,使用者可以跟據自己的需求將它們替換成如下字母:
選項 | 釋義 |
---|---|
a | 訪問時間 |
B | 誕生時間 |
c | 狀態變化時間 |
m | 修改時間 |
t | 將所指定的引數理解為一個具體的時間值 |
find的找到大檔案
find新增“-size”選項:
例子:-size +40M:表示搜尋大於40M的檔案;
-size -40M:表示搜尋小於40M的檔案;
-size 40M:表示搜尋等於40M的檔案;
選項 | 釋義 |
---|---|
b | 512-byte資料塊 |
c | bytes |
w | 兩位元組的字(words) |
k | KB |
M | MB |
G | GB |
find的遞迴搜尋
find提供了-maxdepth選項來控制搜尋的深度!
# -maxdepth [param] 表示遞迴的深度
-> find . -maxdepth 1 -name first
-> find . -maxdepth 2 -name first
./test1/first
find命令其他
-regex選項用來匹配正則表示式
-perm選項,用於設定許可權
-> find . -perm 664 -exec ls -lh {} \;
-rw-rw-r-- 1 git git 14 Nov 3 09:53 ./test1/first
-rw-rw-r-- 1 git git 0 Nov 3 20:13 ./test1/second
-rw-rw-r-- 1 git git 14 Nov 3 09:12 ./test2/test1.txt
- -exec:find針對搜尋到的每一個物件執行特定的Shell命令;
- ls -hl:指定的特定Shell命令;
- {}:在-exec用法中,指代find搜尋到的每一個物件;
- \;:在-exec用法中,“;“表示特定Shell命令的結束,為了防止轉義所以加上了“\”。