find的使用說明與事例

2022-09-07 17:48:19 字數 4356 閱讀 4918

新建歡迎來到來到大浪濤天的部落格

2.1 組合條件:

find [option]... [查詢路徑] [查詢條件] [處理動作]

1.1.1 根據檔名查詢:

eg: find /tmp -iname "fun*" |xargs rm -rf

-regex "pattern":以pattern匹配整個檔案路徑字串,而不僅僅是檔名稱;

1.1.2 根據屬主、屬組查詢:

eg :[root@localhost tmp]# find /tmp -user "test100"

eg:find /tmp -group "test100"

eg: find /tmp/ -uid "1099"

eg : find /tmp/ -gid "1099"

eg:find /tmp -nouser

eg:find /tmp -nogroup

1.1.3 根據檔案型別查詢:

1.1.4 根據檔案大小來查詢:

-size [+|-]#unit(-size,然後+或者-接上數字然後接上單位)

常用單位:k, m, g

unit: (#-1, #](unit指單位,#指數字,例如正好是3k則是大於3-1,小於等於3)

-#unit:[0,#-1](如果是-3k,則表示大於等於0,小於等於2k)

+#unit:(#,oo) (如果是+3k ,則表示大於3k)

例如:

[root@localhost tmp]# find ./ -size 5k -exec ls -lh {} \; 

-rw-r--r--. 1 root root 5.0k feb 9 05:38 ./dir_colors

-rw-r--r--. 1 root root 4.6k feb 9 05:38 ./dir_colors.lightbgcolor

-rw-r--r--. 1 root root 5.0k feb 9 05:37 ./passwd

[root@localhost tmp]# find ./ -size -5k -exec ls -lh {} \;

-rw-r--r--. 1 root root 2.9k feb 9 05:38 ./bashrc

-rw-r--r--. 1 root root 2.4k feb 9 05:38 ./libuser.conf

[root@localhost tmp]# find ./ -size +5k -exec ls -lh {} \;

-rw-r--r--. 1 root root 12k feb 9 05:38 ./aliases.db

-rw-r--r--. 1 root root 5.6k feb 9 05:38 ./dir_colors.256color

-rw-r--r--. 1 root root 7.1k feb 9 05:38 ./kdump.conf

1.1.5 根據時間戳:

-atime [+|-]#, (-time,然後+或者-接上數字)

#: [#,#+1),(#,代表數字,如果是3天,則代表大於等於3天,小於4天,3天以前,4天以內)

+#: [#+1,oo] (如果是3代表,大於等於4天,也就是4天以前)

-#: [0,#) (如果#是3,則表示小於3,3天以內)

a是指access 接入時間,當cat或者cd檔案或者目錄時,a會改變。

-mtime(modify改變時間),當改變檔案許可權時改時間不變,但是當改變檔案內容時這個時間會發生改變。

-ctime(change 時間),當改變檔案內容或者改變檔案時間時c都會發生改變。

如果檢查乙個時間段檔案內容的修改則通常用mtime

以「分鐘」為單位:

[root@localhost tmp]# date

fri feb 9 07:11:32 cst 2018

[root@localhost tmp]# stat * |grep access

access: (0644/-rw-r--r--) uid: ( 0/ root) gid: ( 0/ root)

access: 2018-02-06 05:00:00.000000000 +0800

access: (0644/-rw-r--r--) uid: ( 0/ root) gid: ( 0/ root)

access: 2018-02-07 05:00:00.000000000 +0800

access: (0644/-rw-r--r--) uid: ( 0/ root) gid: ( 0/ root)

access: 2018-02-03 05:00:00.000000000 +0800

[root@localhost tmp]# find ./ -mtime 3

[root@localhost tmp]# find ./ -atime 3

./a[root@localhost tmp]# find ./ -atime -3

././b

[root@localhost tmp]# find ./ -atime +3

./c[root@localhost tmp]#

插入話題一:如果改變檔案的時間戳,

[root@localhost tmp]# touch -a -t 201804090830.00 a

[root@localhost tmp]# stat a

file: 『a』

size: 6 blocks: 8 io block: 4096 regular file

device: 803h/2051d inode: 33575688 links: 1

access: (0644/-rw-r--r--) uid: ( 0/ root) gid: ( 0/ root)

context: unconfined_u:object_r:user_tmp_t:s0

access: 2018-04-09 08:30:00.000000000 +0800

1.1.6 根據許可權查詢:

1.1.7 處理動作:

注意:find傳遞查詢到的檔案至後面指定的命令時,查詢到所有符合條件的檔案一次性傳遞給後面的命令;

有些命令不能接受過多引數,此時命令執行可能會失敗;另一種方式可規避此問題:

find | xargs command

!a -a !b = !(a -o b)

!a -o !b = !(a -a b)

找出/tmp目錄下,屬主不是root,且檔名不是fstab的檔案;

find /tmp \( -not -user root -a -not -name "fstab" \) -ls

find /tmp -not \( -user root -o -name "fstab" \) -ls

切記,引數前面均要加橫桿,-user -a -not -name -group,如果提示下列錯誤就要想到是不是沒有加橫桿

[root@localhost ~]# find /tmp -not -user root -a -not group root

find: paths must precede expression: group

usage: find [-h] [-l] [-p] [-olevel] [-d help|tree|search|stat|rates|opt|exec] [path...] [expression]

[root@localhost ~]# find /tmp -not -user root -a -not -group root

/tmp/file7

/tmp/file8

/tmp/file9

/tmp/file10

find /tmp -not -user root -a -not -group root -ls

find /tmp \( -not -user root -a -not -group root \) -ls

find /tmp -not \( -user root -o -group root \) -ls

matlab中find函式的使用說明

find 找到非零元素的索引和值 語法 1.ind find x 2.ind find x,k 3.ind find x,k,first 4.ind find x,k,last 5.row,col find x,6.row,col,v find x,說明 1.ind find x 找出矩陣x中的所有...

matlab中find函式的使用說明

matlab中如何統計乙個矩陣m中零的個數size find m 0 1 原文 find 找到非零元素的索引和值 語法 1.ind find x 2.ind find x,k 3.ind find x,k,first 4.ind find x,k,last 5.row,col find x,6.ro...

VBA中FIND方法的使用說明zz

find 方法在區域中查詢特定資訊。語法 表示式.find what,after,lookin,lookat,searchorder,searchdirection,matchcase,matchbyte,searchformat 表示式 乙個代表range物件的變數。引數 名稱必選 可選資料型別描...