1. 程式人生 > >linux精確查找——find命令

linux精確查找——find命令

find

find命令是一種精確查找工具,可以查找精確查找文件的位置,單相對於locate命令的模糊查找來說,速度要慢了許多。


find - search for files in a directory hierarchy

find [path...] [expression]

path:是指文件的路徑,比如/var,/etc,/tmp等工作目錄;

expression:

選項:比如-user,-root,-size,-perm

條件:本次查找的標準,可以是文件名,可以是文件大小,可以是文件的權限信息,可以是時間戳等等。

處理動作:默認是-print輸出,可以是-ls 顯示文件的具體屬性信息,也可以是進行某種操作;


expression:

根據文件名查找:

-name pattern:根據文件名查找,支持使用、Globbing字符查找(*,[^],[],?)等

-iname pattern:忽略文件名的大小寫進行查找

-samefile pattern:根據指定的文件名,查找其他硬鏈接的文件的路徑;

技術分享圖片

根據文件的inode號查找:

-inum n:

-links n:查找硬連接數為"n"的文件;

-regex pattern:

-iregex pattern:

技術分享圖片

根據文件所有權進行查找:

-user uname:

-uid UID:就是根據用戶名和/或用戶ID,查找屬主為這個用戶賬戶的所有文件;

-group gname:

-gid GID:就是根據組名和/或組ID,查找屬組為這個組賬戶的所有文件;

-nogroup:在文件的所有權的權限位上,沒有屬組名稱僅顯示屬組ID的文件;

-nouser:在文件的所有權的權限位上,沒有屬主名稱僅顯示屬主ID的文件;

技術分享圖片

根據文件的類型:

-type c:

c表示文件類型的單字符描述符,其中包括:

b:塊設備

c:字符設備

d:目錄

f:普通文件

l:符號鏈接

p:管道

s:套接字

-xtype

符號連接文件的查找結果需要其他選擇的配合才能找到,否則查找的是被鏈接的原文件;

技術分享圖片

根據時間戳進行查找:

以天為時間單位進行查找:

-atime [+|-]n:根據訪問時間戳進行查找

-ctime [+|-]n:根據改變時間戳進行查找

-mtime [+|-]n:根據修改時間戳進行查找

n:[n,n+1)

+n:[n+1,+oo)

-n:[now,n)

用簡單的語言來說,就是下圖的結果。

技術分享圖片

以分鐘為單位進行查找:

amin [+|-]n:

cmin [+|-]n:

mmin [+|-]n:


根據文件的大小進行查找:

-size n[cwbkMG]

n:(n-1,n]

+n:[n,+oo)

-n:[0,n-1]


邏輯運算操作符組合前面的條件進行復雜邏輯的判斷:

-a | -and:邏輯與運算,默認就是該邏輯運算,可省略;

-o | -or:邏輯或運算;

-not | !:邏輯非運算;


德默根定律依然生效;A&B=!A|!B

根據權限來查找:

-perm [/|-]mode:

mode:精確權限匹配,意思是查找必須與指定的權限位完全匹配的文件;

/mode:任何一個權限位的權限中只要有一個去權限能夠滿足條件,即為匹配成功,就可以將之作為查找結果;隱含的邏輯或關系;

-mode:每一個權限位的權限中都必須同時包含指定的權限位,才能滿足條件,才算匹配成功,將之作為查找結果;隱含了邏輯與關系;


真 取反 假

假 取反 真

全部為真 取反 任何一個為假

全部為假 取反 任何一個為真

處理動作:

-print:將符合條件的查找結果直接輸出到標準輸出;默認動作;

-ls:將符合條件的查找結果以"ls -dils"命令的執行結果進行顯示;

-exec command {} \;

-ok command {} \;

對於符合條件的查找結果按照"command"命令再執行一遍,{}為占位符,其含義是:用來引用find命令查找結果中的各個文件的路徑信息;


ex:

查找當前系統上沒有屬主或屬組,且最近一個月內曾被訪問過的文件,並將其屬主屬組均修改為root;

~]# find -nouser -o -nogroup -a -atime 30 -exec chown root,root {} \


註意:

-exec是非交互式的;-ok是交互式的;

很多命令是不能放置於管道後面使用的;因為管道輸送的是純字符串信息,因此管道後面的命令一般來講都必須是處理字符串的命令;通常,可以使用xarge命令將其轉換成能夠被管道後面的命令處理的參數;

技術分享圖片



linux精確查找——find命令