(一)使用locate命令
- 查詢系統(tǒng)上預建的文件索引數(shù)據(jù)庫
/var/lib/mlocate/mlocate.d
- 依賴于事先構(gòu)建 的索引
- 索引的構(gòu)建是在系統(tǒng)較為空閑時自動進行( 周期性 任務),管理員手動更新數(shù)據(jù)庫(updatedb)
- 索引構(gòu)建過程需要遍歷整個根文件系統(tǒng),極消耗資源
- 工作特點:
- 查找速度快
- 模糊查找
- 非實時查找
- 搜索的是文件的全路徑肉微,不僅僅是文件名
- 可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
locate
locate KEYWORD
-i 不區(qū)分大小寫的搜索
-n N 只列舉前N 個匹配項目
locate conf
#搜索名稱或路徑中帶有“conf ”的文件
locate -r ‘\.conf$’
#使用Regex 來搜索以“.conf
(二)find命令
- 定義:
- 實時查找工具,通過遍歷指定路徑完成文件查找
- 工作特點:
- 查找速度略慢
- 精確查找
- 實時查找
- 可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
find [OPTION]... [ 查找路徑] [查找條件] [ 處理動作]
查找路徑:指定具體目標路徑蜡塌;默認為當前目錄
查找條件:指定的查找標準碉纳,可以文件名、大小馏艾、類型劳曹、權(quán)限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作琅摩,默認輸出至屏幕
- 搜索層級
-maxdepth level 最大搜索目錄深度, 指定目錄為第1級
-mindepth level 最小目錄深度
- 根據(jù)文件名和inode 查找:
- name " 文件名稱" :支持使用glob
*, ?, [], [^]
- iname " 文件名稱":不區(qū)分字母大小寫
- inum n 按inode 號查找
- samefile name 相同inode號的文件
- links n 鏈接數(shù)為n 的文件
- regex "PATTERN" :以PATTERN匹配整個文件路徑字符串铁孵,而不僅僅是文件名稱
- 根據(jù)屬主、屬組查找:
- -user USERNAME:查找屬主為指定用戶(UID) 的文件
- -group GRPNAME:查找屬組為指定組(GID) 的文件
- -uid UserID:查找屬主為指定的UID 號的文件
- -gid GroupID:查找屬組為指定的GID 號的文件
- -nouser :查找沒有屬主的文件
- -nogroup :查找沒有屬組的文件
- 根據(jù)文件類型查找
根據(jù)文件類型查找: - -type TYPE:
- f: 普通文件
- d: 目錄文件
- l: 符號鏈接文件
- s :套接字文件
- b: 塊設備文件
- c: 字符設備文件
- p: 管道文件
上述的條件可以組合起來進行組合查找房资,但是中間要加上組合條件的
KEYWORD
- 組合條件:
- 與:-a
- 或:-o
- 非:-not, !
- 德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
對以上的了解的只是這里做個簡單的例子
找出/tmp目錄下蜕劝,屬主不是root,且文件名 不以f 開頭的文件
find /tmp ( -not -user root -a -not -name 'f' ) -ls
find /tmp -not ( -user root -o -name 'f' ) –ls
示例:查找/etc/下轰异,除/etc/sane.d目錄的其它所有.conf后綴的文件
find /etc -path ‘/etc/sane.d’ -a -prune-o -name “.conf”
find /etc (–path ‘/etc/sane.d’ –o –path ’/etc/fonts’ )-a prune –o name “.conf”
查找條件可以是其他的:
根據(jù)文件大小來查找:
-size [+|-]#UNIT
常用單位:k, M, G 岖沛,c(byte) )
-
UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT :[0,#-1]
如:-6k 表示[0,5k]
+#UNIT :(#, ∞ )
如:+6k 表示(6k ,∞ )
根據(jù)時間戳:
以“天”為單位;
-atime [+|-]#,
-
: [#,#+1)
+#: [#+1, ∞ ]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據(jù)權(quán)限查找:
-perm [/|-]MODE
MODE : 精確權(quán)限匹配
/MODE :任何一類(u,g,o) 對象的權(quán)限中只要能一位匹配
即 可搭独,或關(guān)系烫止,+從centos7 開始淘汰
-MODE :每一類對象都必須同時擁有指定權(quán)限,與關(guān)系
0 表示不關(guān)注
find -perm 755會匹配權(quán)限模式恰好是755 的文件
只要當任意人有寫權(quán)限時戳稽,find -perm +222 就會匹配
只有當每個人都有寫權(quán)限時,find -perm -222 才會匹配
只有當其它人(other)有寫權(quán)限時,find -perm -002才會匹配
處理動作
-print:默認的處理動作惊奇,顯示至屏幕-ls:類似于對查找到的文件執(zhí)行“l(fā)s -l” 命令
-delete :刪除查找到的文件
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND{};對查找到的每個文件執(zhí)行由 COMMAND指定的命令互躬,對于每個文件執(zhí)行命令之前,都會交互式求用戶確認
-exec COMMAND {};對查找到的每個文件執(zhí)行由COMMAND 指定的命令
{}:用于引用查找到的文件名稱自身
find:傳遞查找到的文件至后面指定的命令時颂郎,查找到所有符合條件的文件一次性傳遞給后面的命令
find示例:
find -name “*.conf” -exec cp {} {}.orig \;
# 備份配置文件吼渡,添加.orig這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;
# 提示刪除存在時間超過3天以上的joe 的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;
# 在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name “*.sh” –exec chmod 755{}\;
find /home –type d -ls
# 需要找/data文件內(nèi)權(quán)限為644的以“.sh”結(jié)尾的普通文件然后修改權(quán)限為755
參數(shù)替換xargs
- xargs用于產(chǎn)生某個命令的參數(shù),xargs入可以讀入stdin的數(shù)據(jù)乓序,并且以空格符或回車符將將stdin的數(shù)據(jù)分隔成為arguments
- 注意:文件名或者是其他意義的名詞內(nèi)含有空格符的情況
- 有些命令不能接受過多參數(shù)寺酪,命令執(zhí)行可能會失敗,xargs可以解決
find 和xargs 格式:find | xargs COMMAND