find:實時查找工具,根據我們指定的內容或者條件在系統上進行實時查找,比locate在實際場景中用的多得多的多
具體用法:find 查找路徑 查找條件 找到之后執行的動作
例如: find . -name “baoding.log” -print (按名字查找到baoding.log文件后輸出到屏幕上,也可以通配符查找)
查找條件
-name 可以使用通配符 比如 * ? [] [^]
find . -name “????.log”
-iname 文件名稱忽略大小寫
find . -iname “baoding.log”
-inum n 根據inode來查找 (基本不用)
find . -inum 1179826
-samefile name 查找相同inode號的文件,其實等于查找硬鏈接(基本不用)
-links n 根據鏈接數
find . -links 2
-regex 使用正則表達式的方法匹配文件名
find /etc/ -regex “.*\.sh$”
根據屬主和屬組來查找
-user -group -uid -gid
-nouser 查找沒有屬主的文件或者目錄
-nogroup 查找沒有屬組的文件或者目錄
測試方法:新建一個ash用戶,然后把一個文件的屬主和屬組改成ash
然后再刪除ash用戶
根據文件類型:
-type f 普通文件
d 目錄
l 鏈接文件
s 套接字文件
b 塊設備
c 字符設備
p 管道
根據文件大小來查找
-size + 大于多少的文件
k M G
-size – 小于多少的文件
k M G
-size 等于多少的文件
k M G
根據時間來查找
-mtime +7 7天以前的 從第8天開始
-mtime 7 當前時間往前推第7天
-mtime -7 當前時間往前推第7天以內
根據權限來查找(基本不用的)
-perm 755 精確匹配有755權限的文件
-perm -222 必須包含全部的222權限才可以
-perm +222(CentOS 6)
/222(CentOS 7)
只要有一個比如說屬主 屬組或者其他人有一個擁有寫權限即可
組合條件:
與:-a
或:-o
非:-not, !
不是p 或者 不是Q == 不是(P和Q)
不是P 并且 不是Q == 不是 (P或者Q)
同時兩個條件 find . -user nanjing -type f
find -not -user joe -o -not -user jane
find . -user nanjing -o -group 1012
find . -user nanjing -type f
使用最頻繁的是
-name 通配符
-type f普通文件
d目錄
處理動作 -print 打印到屏幕上
-ls 打印到屏幕上 類似于ls -l
-delete 刪除操作 只刪除文件,不能刪除非空目錄
-fls file 查找到的文件信息保存到指定的文本中
-ok 在執行后面的動作之前會提示你是否需要執行(交互式的)
-exec CMD {} \; 執行后面的命令 {} 表示前面find出的結果 \; 固定用法
find 出來之后 -exec ls (一百萬個文件) 刪不了的
xargs 將前面的find的查找結果分批次給后面的命令作為執行的參數,比如
find / -name “*” | xargs ls
避免前面的find查找文件過多造成后面的命令不能執行這種情況
參數過多
示例:執行刪除操作
find /tmp/hebei/ -name “*.log” | xargs rm -rf
刪除前先執行查看操作:
find /tmp/hebei/ -name “*.log” | xargs ls -l
find /tmp/ \( -not -user root -a -not -name “f*” \)
多個條件要使用\(\) 不能使用“”
find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print
&& 真 ||
查找/etc/下面所有的目錄
當查找到/etc/sane.d的時候 前面的條件為真(’/etc/sane.d’ -a -prune)
或后面的條件就不會執行(-name “*.conf”)
當查找到其他目錄的時候 前面的條件為假 (’/etc/sane.d’ -a -prune)
或后面的會執行 (-name “*.conf”)
a && b || c
a 和b 都為真的時候 則 a && b 為真,然后后面c就不會執行
a 或者b 有一個為假,則 a && b 為假,然后后面的c就會執行
查找目錄是 /etc/
要求排除 /etc/sane.d
查找*.conf 文件
find -name “*.conf” -exec cp {} {}.orig \;
備份配置文件,添加.orig這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;
提示刪除存在時間超過3天以上的joe的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;
在你的主目錄中尋找可被其它用戶寫入的文件
ind /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
find /home –type d -ls
生產使用方式:
1 刪除 find /logs/ -name “*.log” -mtime +7 | xargs rm 監控告警 (磁盤告警)
find /logs/ -name “*.log” -size +20G | xargs rm 應用日志
2 備份 find /apps/data/ -name “*” -exec cp {} /backup/ \;
3 查找 find /apps/ -name “*.log” | xargs grep -i “error” 日志里面找錯誤
原創文章,作者:fsy,如若轉載,請注明出處:http://www.www58058.com/73111
總結了find命令的詳細用法,內容寫的很不錯,需要注意一下排版