1. 程式人生 > >Linux基礎find命令

Linux基礎find命令

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命令的結束,為了防止轉義所以加上了“\”。