Linux文件查找之findlocate
Linux文件查找之find&locate
一、概述
? ? Linux系統核心的思想之一“一切皆文件“,對于這么多的文件,如何快速查找過濾呢?下面我們就看看系統提供的文件查找命令find和locat,熟練使用find命令是運維人員的必經之路
二、find的用法及示例
1.find特點
查找速度略慢
精確查找
實時查找
只能搜索有讀取和執行權限的目錄
2.find用法
? ? ?用法:find ?[options] ?[查找路徑] ?[ 查找條件] ?[處理動作]
? ? ?查找條件:
根據文件類型查找-type?f|d.......f 普通文件d 目錄l 鏈接s 套接字b 塊設備c 字符設備 p 管道文件根據屬主、屬組查找-user?name 查找目錄下屬主為name的文件-group?g1 查找屬組為g1的文件-uid?# 查找uid為#的文件-gid?# 查找gid為#的文件-nouser 查找沒有屬主的文件-nogroup 查找沒有屬組的文件特定選項-mindepth?level 設置最小搜索層級-maxdepth?level 設置最大搜索層級-name 匹配文件名搜索,支持通配符 -iname 以名稱搜索,忽略文件名大小寫-inum?# 按inode號搜索-samefile? 搜索相同inode號的文件-links?# 搜索鏈接數為#的文件-regex?"pattern" 搜索匹配該字符串的文件-prune 將某個目錄排除在搜索路徑之外根據文件大小查找-size??[+|-]#(單位) 常用單位:k??M??G6k 表示5k<S≤6k-6k 表示0≤S≤5k+6k 表示S>6k?根據時間戳查找 -atime??[+|-]# +5:5天以前??-10:十天以內-atime??? 訪問時間,以天為單位?-mtime 更改時間,以天為單位-ctime 改變時間,以天為單位-amin 以分鐘為單位-mmin 以分鐘為單位-cmin 以分鐘為單位根據權限查找
-perm [/|-]mode
mode 精確權限匹配 如:find -perm 222 ?匹配權限為222的文件 ?
/mode 權限位(ugo),只要有一位匹配即可,或者關系 ?
????????????????如:find -perm /222 ?只需一個權限位有寫權限即可
-mode 指定權限權限位都必須匹配 ?
????????????????如:find -perm -222 ?各權限位都有寫權限
注意三種權限的區別
組合條件
-a 與
-o 或
-not,! 非
燒腦的非選項
!A -a !B=!(A -o B)
!A -o !B=!(A -a B)
? ? ? 處理動作
-print 打印匹配文件
-ls 長格式顯示匹配文件
-delete 刪除匹配文件
-fls outfile 輸出到指定文件
-ok cmd {} \; 對查找到的每個文件執行cmd命令,交互確認
-exec cmd {} \; 執行cmd命令,不進行交互確認
{} 代表查找到的文件自身
注意:由于是find查找到的文件,是一次性傳遞給后面的cmd命令,有寫命令會出現報錯現象,可使用xargs解決
find ?....... ? | ? xargs ? cmd
3.find使用實例
①、搜索/var目錄下文件名中含有log的文件
find /var -name "*log*"
②、搜索/app目錄下屬主為tom,數組為g1的文件
find /app ?-user tom -a -group g1
③、搜索/app目錄下屬主不是tom,也不是joe的文件
find /app -not -user tom -a -not -user -joe
find /app -not \(-user tom -o -user joe\)
④、刪除存在時間超過3天以上,屬主為tom的臨時文件
find /tmp -ctime +3 -user tom -ok rm {} \;
⑤、查找自己家目錄可以被其他用戶寫入的文件,并去掉其他用戶的寫權限
find ~ -perm -022 -exec ?chmod ?o-w ?{} ?\;
⑥、查找/var目錄下10以前修改的文件
find /var -mtime +10 -print
⑦、查找/var目錄下10以內修改的文件
find /var -mtime -10?
⑧、查找/var目錄更改時間下比file1.log新,比file2.log舊的文件
find /var -newer file1.log -a -not -newer file2.log
⑨、查找/etc一級目錄下所有的目錄文件
find /etc -maxdepth 1 -type d?
⑩、查詢/目錄下大于100M的文件
find / -size +100M
11、刪除/root一級目錄中非隱藏文件的普通文件
find ~ -maxdepth 1 -type f |grep -v "/root/\."
12、查詢當前系統中沒有屬主和屬組的文件
find / -nouser -a -nogroup
13、查找系統中所有具備suid權限的文件
find / -perm /u=s
14、查找系統中所有具備sgid權限的文件
find / -perm /g=s
15、查找/etc所有可執行文件
find /etc -perm /a=x
16、查找系統中所有空文件
find / -type f -empty ? ? ?
17、查詢/etc目錄下所有隱藏文件
find /etc -type f -name ".*"
18、查找50-100內被修改過的文件
find / -mtime +50 ?-mtime -100
19、查找最近1小時被修改過的文件
find / -mmin -60
三、locate用法及示例
1、locate概述
相比find,locate查找速度比較快,但由于其僅支持非實時查找,使用率不高
2、locate工作特點
查找速度快
非實時查找
搜索文件全路徑
只能搜索用戶具備讀取和執行權限的目錄
3、locate用法
locate [options] ?匹配模式
-i 不區分大小寫搜索
-n # 只列舉前#個匹配項
4、示例
locate conf 查找文件名中含有conf的文件
轉載于:https://blog.51cto.com/10783819/1910471
總結
以上是生活随笔為你收集整理的Linux文件查找之findlocate的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用mhz来衡量计算机的性能,它指的是什么
- 下一篇: linux中临时、永久修改ip