find查找概述
資料很多,忘記放哪了舅锄,所以需要通過查找的方式進(jìn)行搜索
find命令可以根據(jù)不同的條件來進(jìn)行查找文件,例如:文件名稱司忱、文件大小皇忿、文件修改時間、屬主屬組坦仍、權(quán)限等等鳍烁。
find命令的基本語法如下:
image.png
find查找方式
1.按名稱查找
按照名稱進(jìn)行查找
[root@oldboy ~]# find ./ -name "*eth0"
按照名稱查找(不區(qū)分大小寫)
[root@oldboy ~]# find ./ -iname "*eth0"
2.按文件大小查找 size
查找/etc/目錄下大于5M的文件
[root@oldboy ~]# find /etc/ -size +5M
查找/etc/目錄下小于5M的文件
[root@oldboy ~]# find /etc/ -size -5M
查找/etc/目錄等于5M的文件
[root@oldboy ~]# find /etc/ -size 5M
3.按文件類型查找 -type
f 文件
d 目錄
s socket套接字文件
l 鏈接文件
c 字符設(shè)備
b 塊設(shè)備
查找當(dāng)前目錄下類型是文件的,并且名稱跟eth0相關(guān)的都列出來
[root@oldboy ~]# find ./ -type f -iname "*eth0" | xargs ls -l
查找/etc/目錄下類型是文件繁扎,大小是大于5M幔荒,名稱以.bin結(jié)尾的
[root@oldboy ~]# find /etc/ -type f -size +5M -name "*.bin"
查找/etc/目錄下類型是文件的,名稱是 .repo結(jié)尾的
[root@oldboy ~]# find /etc/ -type f -name "*.repo"
查找/dev/下的類型是塊設(shè)備的梳玫,并名稱是sda開頭的
[root@oldboy ~]# find /dev/ -type b -name "sda*" | xargs ls -l
查找/dev下的類型是的字符設(shè)備爹梁,并名稱是tty開頭的
[root@oldboy ~]# find /dev/ -type c -name "tty*"
4.按修改時間進(jìn)行查找 -mtime
第7天
[root@oldboy ~]# find ./ -type f -mtime 7
7天以前的內(nèi)容都會被篩選出來,然后刪除提澎,保留最近7天的內(nèi)容
[root@oldboy ~]# find ./ -type f -mtime +7 -name "file-*"
最近7天的內(nèi)容都會被篩選出來
[root@oldboy ~]# find ./ -type f -mtime -7 -name "file-*"
本地文件保留最近7天的備份文件卫键,備份服務(wù)器保留3個月的備份文件
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +180 -delete
5.按用戶和組進(jìn)行查找 -user -group -nosure -nogroup
查找屬主是jack
[root@xuliangwei ~]# find /home -user jack
查找屬組是admin
[root@xuliangwei ~]# find /home -group admin
查找屬主是jacky,屬組是jack
[root@oldboyedu ~]# find /home/ -type d -user jacky -
group jack
查找沒有屬主
[root@xuliangwei ~]# find /home -nouser
查找沒有屬組
[root@xuliangwei ~]# find /home -nogroup
查找沒有屬主或?qū)俳M
[root@xuliangwei ~]# find / -nouser -nogroup
6.find查找后的處理動作
image.png
[root@oldboy ~]# time find ./ -type f -name "file*" -exec rm -f {} \;
real 0m0.007s
user 0m0.002s
sys 0m0.003s
[root@oldboy ~]# time find ./ -type f -name "file*" | xargs rm -f
real 0m0.005s
user 0m0.001s
sys 0m0.003s
查找/var/log/類型是文件的,并且名稱是.log結(jié)尾的碴犬,并且7天以前的絮宁,然后刪除(三種方式)
[root@oldboy ~]# find /var/log/ -type f -name "*.log" -mtime +7 -exec rm -f {} \;
[root@oldboy ~]# find /var/log/ -type f -name "*.log" -mtime +7 -delete
[root@oldboy ~]# find /var/log/ -type f -name "*.log" -mtime +7 | xargs rm -f
7.記得文件的內(nèi)容是什么,但不清楚文件名稱是什么服协,也不知道路徑在哪绍昂,怎么辦
使用find 查找 文件
使用grep 過濾內(nèi)容
將find查詢的文件結(jié)果,作為grep的參數(shù)
[root@oldboy ~]# find /etc/ -type f | xargs grep "log_group"
/etc/audit/auditd.conf:log_group = root
8.find邏輯運(yùn)算符
image.png
查找 當(dāng)前目錄下,屬主不是root的所有文件
[root@oldboy ~]# find /home/ ! -user root -ls
[root@oldboy ~]# find /home/ -not -user root -ls 使用較少
查找當(dāng)前目錄下窘游,屬主屬于jack唠椭,并且大小大于1k的文件
[root@oldboy ~]# find /home/ -type f -a -user jacky -a -size +1k
查找當(dāng)前目錄下的屬主為root ,或者xml結(jié)尾的普通文件‘
[root@oldboy ~]# find . -type f -a \( -user hdfs -o -name '*.xml' \)
``