詳解Linux命令與文件查找
一、執(zhí)行文件名查找
which(查找‘執(zhí)行文件') //根據(jù)PATH環(huán)境變量所規(guī)范的路徑查詢(xún)
which [-a] command //其中參數(shù)-a是指列出找到所有命令,而非只顯示找到的第一個(gè)
例如:which ifconfig
二、文件名的查找
1、whereis(尋找特定文件)
whereis [-bmsu] filename/directoryname
-b :只找二進(jìn)制的文件
-m :只找在說(shuō)明文件manual路徑下的文件
-s :只找source源文件
-u :查找不在上面三個(gè)規(guī)定下的特殊文件
例如:whereis ifconfig
2、locate
依賴(lài)于事先構(gòu)建好的索引庫(kù),查找速度快;
用法:locate [-ir] keyword
-i : 忽略大小寫(xiě)的差異
-r : 后面可接正則表達(dá)式的顯示防方式
例如:locate ifconfig
說(shuō)明:lcoate是根據(jù)/var/lib/mlocate內(nèi)記錄數(shù)據(jù)查找,而數(shù)據(jù)來(lái)源通過(guò)更新數(shù)據(jù)庫(kù)updatedb根據(jù)/etc/updatedb.config的配置從硬盤(pán)獲取數(shù)據(jù)更新到/var/lib/mlocate;
注意:whereis和locate命令可能搜索到已經(jīng)刪除的文件,原因數(shù)據(jù)庫(kù)沒(méi)及時(shí)更新(一般一天更新一次),不過(guò)可以手動(dòng)執(zhí)行updatedb更新。
安裝locate:
yum -y install mlocate
查看包:
yum search mlocate
安裝好更新數(shù)據(jù)庫(kù)該命令才生效:
直接執(zhí)行updatedb即可
3、find
實(shí)時(shí)查找工具,通過(guò)遍歷指定目錄下的文件系統(tǒng)層級(jí)結(jié)構(gòu)完成文件查找;
工作特性:
查找速度略慢;
精確查找;
實(shí)時(shí)查找;
用法:
find [option] [PATH] [查找條件] [action]
查找條件:指定查找標(biāo)準(zhǔn),可以根據(jù)文件名、大小、類(lèi)型、從屬關(guān)系、權(quán)限等標(biāo)準(zhǔn)進(jìn)行;
action:對(duì)符合查找條件的文件作出操作,例如刪除操作;
查找條件:
1)根據(jù)時(shí)間查詢(xún)
以‘天'為單位:
-atime、-ctime、-mtime
以mtime為列
-mtime n :n為數(shù)字,在n天前的‘一天之內(nèi)'被改過(guò)的文件;
-mtime -n :n天內(nèi)(包含第n天),修改過(guò)的文件;
-mtime +n :n天前(不包含第n天),修改過(guò)的文件;
以‘分'為單位:
-amin、-mmin、-cmin
說(shuō)明:時(shí)間的計(jì)算從現(xiàn)在開(kāi)始以24小時(shí)為一天來(lái)計(jì)算,如下圖所示:
2)根據(jù)用戶(hù)和用戶(hù)組來(lái)查詢(xún)
-uid n:其中n即指定屬主的UID,在/etc/passwd可以查看;
-gid n:其中n即指定屬組的GID,在/etc/group可以查看
-user name: 查找屬主為name的文件;
-group name:查找屬組為name的文件;
-nouser:查找/etc/passwd中沒(méi)得屬主的文件;
-nogroup:查找/etc/group中沒(méi)得屬組的文件;
例如:find /home -user legayu
3)根據(jù)文件名和文件權(quán)限查找
-name ‘pattern':查找文件;
-iname ‘pattern':同-name,但忽略查找的文件大小寫(xiě);
支持glob通配符*,?,[],[^];
-type TYPE:查找文件類(lèi)型為T(mén)YPE的文件,常見(jiàn)的文件類(lèi)型有正規(guī)文件(f)、設(shè)備文件(b、c)、目錄(d)、連接文件(l)、socket(s)、及FIFO文件(p)等屬性;
-size [+-]SIZE:查找比SIZE還大(+)或還?。?)的文件,大小規(guī)格:c:代表byte,k:代表1024byte,還可用M、G表示:MB和GB,如查找大于50kB的文件:-size +50k
-perm mode:查找文件權(quán)限“剛好等于”mode的文件;
-perm -mode:查找文件權(quán)限“必須包含全部”mode的文件;
-perm /mode:查找文件權(quán)限“包含任一”mode的文件;
例如:find / -name passwd
4)組合邏輯
與:-a
或:-o
非:-not,!
說(shuō)明:邏輯關(guān)系拆分與合并
!A -a !B = !(A -o B)
!A -o !B = !(A -a B )
例如:
查找/tmp中非root用戶(hù)的文件
兩種方法:
find /tmp -not -user root -ls
find /tmp -not -uid 0 -ls
找出/tmp目錄下屬主為非root,而且文件名不包含fstab字符串的文件
5)find特殊功能
對(duì)查詢(xún)的結(jié)果做操作
-print:輸出至標(biāo)準(zhǔn)輸出;默認(rèn)的動(dòng)作;
-ls:類(lèi)似于對(duì)查找到的文件執(zhí)行“l(fā)s -l”命令,輸出文件的詳細(xì)信息,這里不可以使用‘ll'別名;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的長(zhǎng)格式信息保存至指定文件中;
-ok COMMAND {} \; :對(duì)查找到的每個(gè)文件執(zhí)行由COMMAND表示的命令;每次操作都由用戶(hù)進(jìn)行確認(rèn);
-exec COMMAND {} \; :對(duì)查找到的每個(gè)文件執(zhí)行由COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至后面的命令時(shí),是先查找出所有符合條件的文件路徑,并一次性傳遞給后面的命令;
但是有些命令不能接受過(guò)長(zhǎng)的參數(shù),此時(shí)命令執(zhí)行會(huì)失??;
另一種方式可規(guī)避此問(wèn)題:
即find | xargs COMMAND
如:find /root -perm +644 -exec ls -l {} \;
說(shuō)明:其中的{}指find查找到的內(nèi)容,‘\;'代表結(jié)束符‘\'是轉(zhuǎn)義符
舉例:
查找/etc目錄下所有用戶(hù)都沒(méi)有寫(xiě)權(quán)限的文件;
~]# find /etc -not -perm /222 -type f -ls
說(shuō)明:所有用戶(hù)至少有一個(gè)寫(xiě)的權(quán)限,則取反就是都沒(méi)有寫(xiě)權(quán)
查找/etc目錄至少有一類(lèi)用戶(hù)沒(méi)有執(zhí)行權(quán)限的文件;
~]# find /etc -not -perm -111 -type f -ls
說(shuō)明:至少有一類(lèi)用戶(hù)沒(méi)有執(zhí)行權(quán)限就是都有執(zhí)行權(quán)限的取反
以上所述是小編給大家介紹的了Linux命令與文件查找詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)本站網(wǎng)站的支持!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。