溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

文件搜索者--find命令詳解

發(fā)布時(shí)間:2020-06-14 15:43:35 來源:網(wǎng)絡(luò) 閱讀:901 作者:黑洞的來客 欄目:數(shù)據(jù)庫

1. 文件查找:


  linux系統(tǒng)中由于文件的眾多,往往需要在眾多的文件當(dāng)中查找某一個(gè)文件,如果時(shí)間一長,很難記得文件存放至何處,不過,這一點(diǎn),你不比擔(dān)心,因?yàn)殚_發(fā)人員為我們提供了強(qiáng)大的文件搜索工具,下面將介紹兩款常用的文件查找工具locate,和find,這兩款查找工具只能是從文件系統(tǒng)中查找不能在內(nèi)存當(dāng)中查找,因?yàn)閮?nèi)存是沒有文件系統(tǒng)的。


2. locate命令:


  locate命令是基于數(shù)據(jù)庫來查找文件的,命令查找速度快,一般查找跟新慢的,名字變化少的,如:配置文件,可以用locate查找,因?yàn)閿?shù)據(jù)庫需要更新,所以就會(huì)有一點(diǎn)延遲,locate命令一般是每天更新一次數(shù)據(jù)庫,所以有可能最新創(chuàng)建的文件找不到,或者剛剛刪除的文件任在數(shù)據(jù)庫當(dāng)中??梢允褂?/span>updatedb更新數(shù)據(jù)庫信息,數(shù)據(jù)庫文件:/var/lib/mlocate/mlocate.db

 locate 用法:

  locate 選項(xiàng) 參數(shù)

選項(xiàng):

-e 排除在尋找范圍之外。

-q 安靜模式,不顯示任何錯(cuò)誤信息

-n 最多顯示#個(gè)輸出

-r 支持正則表達(dá)式

-i 忽略大小寫

-b 基名

示例:

[root@cnode6_8 etc]# locate -r'\<functions$' -n 3
/etc/rc.d/init.d/functions
/etc/sysconfig/network-scripts/network-functions
/lib/lsb/init-functions


3. find命令


  用來在指定目錄下查找文件。功能十分強(qiáng)大,可以根據(jù)各種條件進(jìn)行查找,如果使用該命令時(shí),不設(shè)置任何參數(shù),則find命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示。

語法:

  find 選項(xiàng) 查找路徑 查找條件 處理動(dòng)作

選項(xiàng):

根據(jù)文件名和iNode查找:

-name 支持使用通配符* ? [] [^] 根據(jù)文件名查找

-iname 不區(qū)分大小寫的根據(jù)文件名查找

-inum # 根據(jù)#指定的iNode號(hào)查找

-samefile 相同iNode號(hào)相同的文件,也就是硬鏈接

-link # 鏈接數(shù)為#的文件

-regex 使用正則表達(dá)式匹配文件

根據(jù)文件屬組和屬主查找:

-user 根據(jù)屬組為指定用戶UID查找文件

-grop 查找屬組問指定組的文件

-gid根據(jù)gid號(hào)碼查找文件

-nouser查找沒有屬主的文件

-nogrop查找沒有屬組的文件

根據(jù)文件類型:

-type

f 普通文件

d 目錄文件

l 符號(hào)鏈接文件

s 套接字文件

b 塊設(shè)備文件

c 字符設(shè)備文件

p 管道文件

組合條件:

-a 與

-o 或

-not !非

根據(jù)文件大小查找:可以查找指定范圍大?。◣挝籯,M,G)的文件

-size [+|-]#unit

# unit (#-1,#] 區(qū)間前開后閉

-#unit [0.#-1]

+#unit (#,)

根據(jù)時(shí)間戳查找:可以以天或分鐘為單位

[+|-]#參數(shù)意義:#:[#,#+1],+#:[#+1,], -# [0,#)

-atime 訪問時(shí)間

-mtime 修改時(shí)間

-ctime 改變時(shí)間

以分鐘為單位的三種時(shí)間

-amin

-mmin

-cmin

根據(jù)權(quán)限查找:-perm [/-] mode

mode 精確權(quán)限匹配

/mode 每一位只要有一類匹配的就行

-mode 每一類必須同時(shí)擁有mode指定的權(quán)限

0 表示不關(guān)注,權(quán)限隨意

查找完成的處理動(dòng)作:

-ls 類似于ls –l 命令可以顯示文件詳細(xì)列表

-delete 刪除查找到的文件

-fls 查找到的文件都以長格式形式保存在文件當(dāng)中

-ok command {} \;對查找到的文件執(zhí)行command之前都會(huì)交互式的詢問用戶

-exec command {} \;類似于上一個(gè)命令,不需要交互,直接默認(rèn)執(zhí)行

排除查找的目錄:

-prune(修減)不包含的文件或目錄

補(bǔ)充:

關(guān)于時(shí)間大小方面參數(shù)數(shù)字的意義和示例:如查找文件大小為12k,表示查找的文件是大于等于11k,小于12k,是指定的值減1得到的,+6k表示查找文件7k(大于6k)到正無窮

-6k表示05k(包含5k,小于6k)的文件


4. find查找文件實(shí)例:


1、查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@centos7 ~]# find /var/ -user root-group mail -ls
201334650   0 drwxrwxr-x   2 root     mail   50 Aug 13 12:54/var/spool/mail
205749525   0 -rw-------   1 root     mail   0 Aug 13 12:54 /var/spool/mail/root


2、查找/var目錄下不屬于root、lp、gdm的所有文件

[root@centos7 ~]# find /var/    -not \( -user root -o -user lp -o -user gdm\)


3、查找/var目錄下最近一周內(nèi)其內(nèi)容修改過,同時(shí)屬主不為root,也不是postfix的文件

[root@centos7 ~]# find /var/ -mtime -7 -not\(  -user root -o -user postfix  \)


4、查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M,且最近一個(gè)周內(nèi)曾被訪問過的文件

[root@centos7 ~]# find / -nouser -nogroup-atime -7


5、查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@centos7 ~]# find /etc/ -size +1M-type -f
find: Arguments to -type should containonly one letter
[root@centos7 ~]# find /etc/ -size +1M-type f
/etc/selinux/targeted/policy/policy.29
/etc/udev/hwdb.bin
/etc/brltty/zh-tw.ctb


6、查找/etc目錄下所有用戶都沒有寫權(quán)限的文件

[root@centos7 ~]# find /etc/ -not -perm/222 –ls


7、查找/etc目錄下至少有一類用戶沒有執(zhí)行權(quán)限的文件

[root@centos7 ~]# find /etc/ -perm -111 -ls


8、查找/etc/init.d目錄下,所有用戶都有執(zhí)行權(quán)限,且其它用戶有寫權(quán)限的文件

[root@centos7~]# find /etc/init.d/ -perm -113
/etc/init.d/test

9. 實(shí)際生產(chǎn)環(huán)境可能使用到的案例:

如果需要對某一個(gè)目錄批量設(shè)置權(quán)限,但是文件和目錄的權(quán)限不一致時(shí)可以用find命令分別設(shè)定

這里給出一個(gè)循環(huán)遞歸得到對文件夾和文件分別有效的設(shè)置方法: 

[root@centos7~]#find /path -type f -exec chmod 644 {} \;    #對目錄和子目錄里的文件
[root@centos7~]#find /path -type d -exec chmod 755 {} \;  #對目錄和子目錄path  是路徑  type 類型 d 是目錄  f是 文件   exec  執(zhí)



附:德·摩根定律

(P Q) = (P) (Q)

(P Q) = (P) (Q)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI