linux下檔案查詢工具 find

2022-09-11 03:18:11 字數 3690 閱讀 1209

常用的檔案查詢命令有:which,locate,find

查詢二進位制數或二進位制命令,由path給出

特點:1.非實時,每天在系統上生成資料庫,通過資料庫查詢

2.模糊查詢

3.updatedb,實時查詢需要進行資料的更新,更新一般需要幾分鐘時間,所以一般是在晚上

4.查詢速度快

特點:1.實時查詢

2.檔案遍歷

3.精確匹配

4.速度較慢

查詢方式:

-name:

-iname:

find ./ -name "test"
-user:屬主

-group:屬組

-uid:根據檔案的uid實現精確查詢

-gid:根據檔案的gid實現精確查詢

-nouser,-nogroup:對於已經被刪除使用者名稱或使用者組的檔案,系統只會保留相應的gid,uid號碼用以標識,而如果此時新建乙個使用者名稱就用可能取得某些檔案的管理許可權,出於安全的考慮,所以要對這些檔案進行查詢,保證安全

與:-a

或:-o

非:-not,-!

find /var -type s  #查詢/var下的套接字檔案
-size [+或-] [檔案大小]

查詢比size還要大(+)或者小(-)的檔案

檔案大小的表示:c:代表byte,k:代表1024bytes,m:代表1024k

1.mtime:當檔案的「內容資料」 更改時,就會更新這個時間。內容資料指的是檔案的內容,而不是檔案的屬性與許可權

2.ctime:當檔案的狀態發生變化時,就會更新這個資料,比如:許可權與屬性發生變化

3.atime:當檔案的內容被讀取時,就會更新這個時間

以天為單位:-ctime,-atime,-mtime

以分鐘為單位:-cmin,-amin,-mmin

例:1.從現在開始到24小時之前有過改動的檔案全部列出來

find / -mtime 0
2.尋找/etc下面的檔案,如果檔案日期比/etc/passwd新就列出來

-newer用在分辨兩個檔案之間的新舊關係

find /etc -newer /etc/passwd
3.尋找四天前的那一天被改動的檔案

find /var -mtime 4
4.四天之內被改動過的檔案

find /var -mctime -4
+4:代表大於等於五天前的檔名:find /var -mtime +4

-4: 代表小於等於四天內的檔名

4:代表4~5天那一天的檔案

1.-perm mode

精確查詢,檔案許可權正好等於mode,mode為類似於chmod的屬性值

2.-perm -mode

每一類物件都必須擁有其指定的許可權標準

3.-perm /mode

任何一類(u,g,o)物件的許可權只要有一位匹配即可

find . -perm /u+w,g+w

find . -perm /u=w,g=w

find . -perm /220

find . -perm -444 -perm /222 ! -perm /111

find . -perm -a+r -perm /a+w ! -perm /a+x

1.-exec command:

command 為其他命令,-exec可以接其他的命令來處理查詢結果

2.-delete:刪除查詢到的檔案

3.-fls /path/to/somefile:

查詢到的檔案的長格式資訊儲存至指定的資料夾

find /var/log -ctime -4 -fls /tmp/test/abc
4.-ok command {} :

對查詢的檔案執行由command指定的命令,對於每個檔案執行命令之前,都會互動式要求使用者確認

5.-exec command {} :

對查詢到的每個檔案執行由command執行的命令

{}:用於引用查詢到的檔名稱自身;注意:find傳遞查詢到的檔案至後面指定的命令時,查詢到的所有符合的檔案一次性傳遞給後面的命令

1.查詢/var 目錄下屬主為root,且屬組為mail的所有檔案或目錄並列出

find /var -user root -group mail -ls
2.查詢/usr 目錄下不屬於root、bin、hadoop的所有檔案或目錄

find /usr -not -user root -not -user hadoop -not -user bin -ls

find /usr -not \( -user root -o -user hadoop -o -not -user bin \) -ls

3.查詢/etc目錄下最近一周內其內容修改過,同時屬主不為root,也不為hadoop的檔案或目錄

find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
4.查詢當前系統上沒有屬主或屬組,且最近一周內曾被訪問過的檔案或目錄

find / -ctmie -7 -a -nouser -a nogroup
5.查詢/etc目錄下大於1m且型別為普通檔案的所有檔案

find /etc -size +1m -a -type f -ls
6.查詢/etc目錄下所有使用者都沒有寫許可權的檔案

find /etc -not -perm /222 -ls
7.查詢/etc目錄下至少有一類使用者沒有執行許可權的檔案

find /etc -not -perm -111 -ls
8.查詢/etc/init.d/目錄下,所有使用者都有執行許可權,且其他使用者有寫許可權的檔案

find /etc/init.d -prem /113 -ls
9.查詢/tmp/test/y目錄下在100分鐘內修改過的檔案,並刪除

find /tmp/test/y -cmin -100 -print | xargs /bin/rm -fr

find /tmp/test/y -cmin -100 -delete

find /tmp/test/y -cmin -100 -ok rm -fr '{}' \; #需要詢問

find /tmp/test/y -cmin -100 -exec rm -fr '{}' \;

10.查詢/var/log目錄下為檔案型別且在10分鐘內被修改過的檔案,並列出

find /var/log -type f -cmin -10 -exec ls -l '{}' \;
11.查詢/var/log下的在四天內被修改過的檔案並把它們的長格式資訊儲存至/tmp/test/abc

find /var/log -ctime -4 -fls /tmp/test/abc

linux下檔案查詢

在使用linux時,經常需要進行檔案查詢。其中查詢的命令主要有find和grep。兩個命令是有區的。區別 1 find命令是根據檔案的屬性進行查詢,如檔名,檔案大小,所有者,所屬組,是否為空,訪問時間,修改時間等。2 grep是根據檔案的內容進行查詢,會對檔案的每一行按照給定的模式 patter 進...

linux下檔案的查詢

1 按照檔名查詢 shell命令格式如下 find directory name name 如果不知道檔案的名稱,可以使用萬用字元代替 或者 其中?可以指代乙個字元,而 可以填充任何字元 比如查詢家目錄下名為hello開始的檔案 find name hello 2 按照檔案大小查詢 shell命令格...

Linux下檔案查詢方式

which which指令會在環境變數 path設定的目錄裡查詢符合條件的檔案 find 在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則 find 命令將在當前目錄下查詢子目錄與檔案。locate 在儲存文件和目錄名稱的資料庫內,查詢合乎範...