Linux find命令及用法

2021-10-17 10:49:08 字數 3855 閱讀 2010

find命令在目錄結構中搜尋檔案,並執行指定的操作。根據給定的路徑和表示式查詢的檔案或目錄。

命令選項:

-name 按照檔名查詢檔案

-perm 按照檔案許可權來查詢檔案

-prune 不在當前指定的目錄中查詢,使用-depth選項,那麼將被忽略

-depth 先處理目錄的內容再處理目錄本身

-user 按照檔案屬主來查詢檔案

-group 按照檔案所屬的組來查詢檔案

-mtime -n +n 按照檔案的更改時間來查詢檔案

-n表示檔案更改時間距現在n天以內,+n表示檔案更改時間距現在n天以前

-nogroup 查詢無有效所屬組的檔案

-nouser 查詢無有效屬主的檔案

-newer file

! file1 查詢更改時間比檔案file新比檔案file1舊的檔案

# find

# find .

列出當前目錄及子目錄下所有檔案和資料夾
# find /home -name "*.txt"

# find /home -iname "*.txt"

在/home目錄下查詢以.txt結尾的檔名

在/home目錄下查詢以.txt結尾的檔名,忽略大小寫

# find ./ -name "*.txt" -o -name "*.pdf"

當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案
# find ./ -type f

查詢當前目錄下所有的普通檔案
型別引數列表:

f 普通檔案

l 符號連線

d 目錄

c 字元裝置

b 塊裝置

s 套接字

p fifo(先進先出佇列)

# find ./ -mindepth 3 -type f

搜尋出深度距離當前目錄至少3個子目錄的所有檔案
unix/linux檔案系統的三種時間戳:

-atime/天,-amin/分鐘:使用者最近一次訪問時間

-mtime/天,-mmin/分鐘:檔案內容最後一次修改時間

-ctime/天,-cmin/分鐘:檔案屬性最後一次修改時間

-n表示檔案更改時間距現在n天以內

+n表示檔案更改時間距現在n天以前

# find ./ -type f -atime -7

搜尋最近七天內被訪問過的所有檔案
# find ./ -type f -atime +7

搜尋超過七天內被訪問過的所有檔案
# find ./ -type f -atime 7

搜尋恰好在七天前被訪問過的所有檔案
檔案大小單位

b —— 塊(512位元組)

c —— 位元組

w —— 字(2位元組)

k —— 千位元組

m —— 兆位元組

g —— 吉位元組

# find / -type f -size +10k

# find / -type f -size -10k

搜尋大於10kb的檔案

搜尋小於10kb的檔案

# find . -type f -name "*.txt" -delete

刪除當前目錄下所有.txt檔案
# find ./ -type f -perm 777

當前目錄下搜尋出許可權為777的檔案
# find ./ -type f -user you

找出當前目錄使用者擁有的所有檔案
# find ./ -type f -group you

找出當前目錄使用者組擁有的所有檔案
pathname: 目錄路徑,用.來表示當前目錄,用/來表示系統根目錄

-print: 將匹配的檔案輸出到標準輸出。

-exec: 對匹配的檔案執行該引數所給出的shell命令

-ok: 在執行每乙個命令之前都會給出提示來確定是否執行

想要的操作寫在乙個檔案裡,可以用exec來配合find查詢

相應命令的形式為 command

\; 注意和\;之間的空格

使用exec選項,必須要同時使用print選項

find命令把匹配到的檔案傳遞給xargs命令,

xargs命令每次只獲取一部分檔案而不是全部

# find ./ -name "you" -exec ls -l {} \;

查詢匹配的檔案之後,使用ls命令顯示詳細資訊
# find ./ -type f -mtime +7 -exec rm {} \;

在指定目錄中查詢更改時間在7日以前的檔案並刪除
# find ./ -name "you" -mtime +7 -ok rm {} \;

在目錄中查詢更改時間在7日以前的檔案並刪除,在刪除之前先給出提示

y鍵刪除檔案,n鍵不刪除

# find /etc -name "passwd*" -exec grep "root" {} \;

在指定的目錄中查詢檔案,然後通過搜尋出現root的行

任何形式的命令都可以在-exec選項中使用

# find ./ -name "you" -exec mv {} . \;

查詢檔案移動到指定的目錄
# find ./ -name "you" | xargs file

查詢當前目錄下所有的檔案,使用xargs命令來測試它們分別屬於哪類檔案
# find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f

執行xargs提示xargs: argument line too long解決方法

-l1 一次處理乙個;-t 處理之前列印出命令

# find / -path "test/test1" -prune -o -print

查詢過程中忽略某個目錄

使用-prune選項來指出需要忽略的目錄。如果同時使用了-depth選項

那麼-prune選項就會被忽略

# find test \( -path test/test3 -o -path test/test4 \) -prune -o -print

避開多個檔案,圓括號表示表示式的結合

linux find命令用法

find maxdept 1 name test.txt 查詢當前目錄下第一級目錄的test.txt檔案 type 指定檔案型別查詢 f 代表檔案 type f name txt 查詢 txt的檔案 mtime 時間 後面加時間表示多久以前修改的,加在最後 mtime 時間 代表幾天之內修改的 ex...

Linux find命令用法小結

find是個使用頻率比較高的命令。常常用它在系統特定目錄下,查詢具有某種特徵 名字體別屬主許可權等 的檔案。find命令的格式 find path options print exec ok path 要查詢的目錄路徑。表示 home目錄.表示當前目錄 表示根目錄 print 表示將結果輸出到標準輸...

Linux find命令用法小結

find是個使用頻率比較高的命令。常常用它在系統特定目錄下,查詢具有某種特徵 名字體別屬主許可權等 的檔案。find命令的格式 find path options print exec ok path 要查詢的目錄路徑。表示 home目錄 表示當前目錄 表示根目錄 print 表示將結果輸出到標準輸...