文件查找命令find 文件查找命令: which locate find which:查找命令字所在的位置 locate:模糊匹配(只要包含關鍵字的文件都查找出來) 不是實時的,基於資料庫查找, updatedb升級locate資料庫 查找速度特別快 find:查看文件或目錄的工具 特點: 實時查找 ...
文件查找命令find
文件查找命令: which locate find
which:查找命令字所在的位置
locate:模糊匹配(只要包含關鍵字的文件都查找出來)
不是實時的,基於資料庫查找, updatedb升級locate資料庫
查找速度特別快
find:查看文件或目錄的工具
特點: 實時查找
精確查找
遍歷整個指定目錄中的文件,速度很慢
支持多種查找條件(屬主,屬組,許可權,文件名等)
語法: find [find_path] [條件] [處理動作]
find_path:如果不寫,預設在當前工作目錄查找
條件:如果不寫,會查找出該路徑下所有的文件
處理動作:預設列印到屏幕上 print
條件:(匹配標準)
-name file_name:根據文件名進行查找,區分大小寫
查找條件通配符:
*:通配任意個數的任意字元 # find /etc/ -name "pass*" # find /etc/ -name "*pass"
?:通配單個的任意字元 # find /etc/ -name "passw*"
-iname file_name:根據文件名進行查找,不區分大小寫
-regex PATTERN:根據正則表達式的模式進行查找
-user:通過屬主進行查找
-group:通過屬組進程查找
-uid UID:通過UID號進行查找
-gid GID:通過GID號進行查找
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
-type:根據文件類型進行查找
-b:塊設備
-c:字元設備
-d:目錄
-f:文件
-p:命名管道
-s:套接字文件
-l:鏈接文件
-size [+ | -] num [k|m|g]
-size 5k:精確匹配
+:大於
-:小於
根據時間戳進行查找: # stat file_name //查看文件的時間戳
[+ | -] 也起作用
-atime:時間單位為天,access時間
-mtime:時間單位為天,modify時間
-ctime:時間單位為天,change時間
-mmin:時間單位為分鐘,modify時間
-amin:時間單位為分鐘,access時間
-cmin:時間單位為分鐘,change時間
根據許可權查找:
-perm MODE:
MODE:num(如644),精確匹配
/MODE:/num任意一位匹配
-MODE:-num文件許可權能夠完全包含此MODE時才能匹配
條件組合:
-a:同時滿足多個條件,比如查找屬主是tom並且許可權為644的文件
-o:滿足一個條件即可,比如查找屬主是tom或者許可權為644的文件
-not:不滿足條件的被查找出來
出來動作:
-print:預設動作,預設查找結果列印到屏幕
-ls:預設以類似於ls -l的形式顯示結果的信息
-ok COMMAND {} \;執行動作時提示用戶是否執行,必須以\;結尾,{}代表文件名占位符
-exec COMMAND {} \;執行動作時不提示用戶直接執行,必須以\;結尾,{}代表文件名占位符
1、查找/var目錄下屬主為root並且屬組為mail的所有文件;
find /var -user root -a -group mail
2、查找/usr目錄下不屬於root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目錄下最近一周內內容修改過且不屬於root及student用戶的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改為root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目錄下所有用戶都沒有寫許可權的文件,顯示出其詳細信息;
find /etc -not -perm /222 -ls