linux find命令詳解

2021-10-12 14:27:36 字數 3076 閱讀 6531

查詢目錄:find /(查詢範圍) -name 『查詢關鍵字』 -type d

查詢檔案:find /(查詢範圍) -name 查詢關鍵字 -print

詳解:find命令用來在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。

例項根據檔案或者正規表示式進行匹配

列出當前目錄及子目錄下所有檔案和資料夾

find .

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

find /home -name 「*.txt」

同上,但忽略大小寫

find /home -iname 「*.txt」

當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案

find . ( -name 「.txt" -o -name ".pdf」 )

或find . -name 「.txt" -o -name ".pdf」

匹配檔案路徑或者檔案

find /usr/ -path 「local」

基於正規表示式匹配檔案路徑

find . -regex 「.*(.txt|.pdf)$」

同上,但忽略大小寫

find . -iregex 「.*(.txt|.pdf)$」

否定引數

找出/home下不是以.txt結尾的檔案

find /home ! -name 「*.txt」

根據檔案型別進行搜尋

find . -type 型別引數

型別引數列表:

f 普通檔案

l 符號連線

d 目錄

c 字元裝置

b 塊裝置

s 套接字

p fifo

基於目錄深度搜尋

向下最大深度限制為3

find . -maxdepth 3 -type f

搜尋出深度距離當前目錄至少2個子目錄的所有檔案

find . -mindepth 2 -type f

根據檔案時間戳進行搜尋

find . -type f 時間戳

unix/linux檔案系統每個檔案都有三種時間戳:

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

修改時間(-mtime/天,-mmin/分鐘):檔案最後一次修改時間。

變化時間(-ctime/天,-cmin/分鐘):檔案資料元(例如許可權等)最後一次修改時間。

搜尋最近七天內被訪問過的所有檔案

find . -type f -atime -7

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

find . -type f -atime 7

搜尋超過七天內被訪問過的所有檔案

find . -type f -atime +7

搜尋訪問時間超過10分鐘的所有檔案

find . -type f -amin +10

找出比file.log修改時間更長的所有檔案

find . -type f -newer file.log

根據檔案大小進行匹配

find . -type f -size 檔案大小單元

檔案大小單元:

b —— 塊(512位元組)

c —— 位元組

w —— 字(2位元組)

k —— 千位元組

m —— 兆位元組

g —— 吉位元組

搜尋大於10kb的檔案

find . -type f -size +10k

搜尋小於10kb的檔案

find . -type f -size -10k

搜尋等於10kb的檔案

find . -type f -size 10k

刪除匹配檔案

刪除當前目錄下所有.txt檔案

find . -type f -name 「*.txt」 -delete

根據檔案許可權/所有權進行匹配

當前目錄下搜尋出許可權為777的檔案

find . -type f -perm 777

找出當前目錄下許可權不是644的php檔案

find . -type f -name 「*.php」 ! -perm 644

找出當前目錄使用者tom擁有的所有檔案

find . -type f -user tom

找出當前目錄使用者組sunk擁有的所有檔案

find . -type f -group sunk

借助-exec選項與其他命令結合使用

找出當前目錄下所有root的檔案,並把所有權更改為使用者tom

find .-type f -user root -exec chown tom {} ;

上例中,{} 用於與-exec選項結合使用來匹配所有檔案,然後會被替換為相應的檔名。

找出自己家目錄下所有的.txt檔案並刪除

find $home/. -name 「*.txt」 -ok rm {} ;

上例中,-ok和-exec行為一樣,不過它會給出提示,是否執行相應的操作。

查詢當前目錄下所有.txt檔案並把他們拼接起來寫入到all.txt檔案中

find . -type f -name 「*.txt」 -exec cat {} ;> all.txt

將30天前的.log檔案移動到old目錄中

find . -type f -mtime +30 -name 「*.log」 -exec cp {} old ;

找出當前目錄下所有.txt檔案並以「file:檔名」的形式列印出來

find . -type f -name 「*.txt」 -exec printf 「file: %s\n」 {} ;

因為單行命令中-exec引數中無法使用多個命令,以下方法可以實現在-exec之後接受多條命令

-exec ./text.sh {} ;

搜尋但跳出指定的目錄

查詢當前目錄或者子目錄下所有.txt檔案,但是跳過子目錄sk

find . -path 「./sk」 -prune -o -name 「*.txt」 -print

find其他技巧收集

要列出所有長度為零的檔案

find . -empty

Linux find命令詳解

在linux上查詢某個檔案確實是一件比較麻煩的事情。畢竟在linux中需要我們使用專用的 查詢 命令來尋找在硬碟上的檔案。linux下的檔案表達格式非常複雜,不象windows,dos下都是統一的aaa.bbb格式那麼方便查詢,在windows中,只要知道要查詢的檔案的檔名或者字尾就非常容易查詢到。...

linux find命令詳解

pathname find命令所查詢 的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄 print find命令將匹配的檔案輸出到標準輸出 exec find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為 command 注意和 之間的空格。ok 和 exec的作用相同,...

Linux find命令詳解

用法總結如下 find pathname options print exec ok pathname 查詢路徑 option 主要選項如下 name 按照檔名稱查詢 perm 按照檔案許可權查詢 prune 不在當前指定的路徑查詢。如果同時指定了 depth選項,則prune被忽略 user 按照...