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