day13-文件查找

find查找

find命令可以根據(jù)不同的條件來進(jìn)行查找文件,例如:文件名稱、文件大小、文件修改時間、屬主屬組、權(quán)限、等等方式。
find命令的基本語法:

命令 路徑 選項(xiàng) 表達(dá)式 動作
查找 地區(qū) 妹紙 18-25歲 約?

1. 按名稱查找name

[root@ennan ~]# find /etc -name "ifcfg*"
# 在/etc目錄下查找名稱以ifcfg開頭的文件
[root@ennan ~]# find /etc/ -iname "iFC*"
# 在/etc目錄下查找名稱以iFC開頭的文件,不區(qū)分大小寫

2. 按文件大小查找size

[root@ennan ~]# find /etc/ -size +5M
# 在/etc下查找大于5M的文件
[root@ennan ~]# find /etc/ -size -5M
# 在/etc下查找小于5M的文件
[root@ennan ~]# find /etc/ -size 5M
# 在/etc下查找大小為5M的文件(四舍五入)

2. 按文件類型查找type

[root@ennan ~]# find /dev/ -type f
# f為文件
[root@ennan ~]# find /dev/ -type d
# d為目錄
[root@ennan ~]# find /dev/ -type l
# l為連接
[root@ennan ~]# find /dev/ -type b
# b為塊設(shè)備
[root@ennan ~]# find /dev/ -type c
# c為字符設(shè)備
[root@ennan ~]# find /dev/ -type s
# s為套接字
[root@ennan ~]# find /dev/ -type p
# p為管道文件

3. find時間查找mtime

時間軸

如圖,假設(shè)當(dāng)前日期是10號,向前推6天(不包括當(dāng)前日期)為4號,4號以前的日期用+6表示,4號之后的日期用-6表示,4號用6表示。

[root@MiWiFi-R3L-srv ~]# date
Sat Aug 31 00:00:49 CST 2019
# 系統(tǒng)當(dāng)前日期為31號
[root@MiWiFi-R3L-srv ~]# for i in {1..31}; do date -s "2019/08/$i" ; touch file-$i ; done
# 通過循環(huán)創(chuàng)建file-1  , file-31
[root@MiWiFi-R3L-srv ~]# ls
file-1   file-14  file-19  file-23  file-28  file-4  file-9
file-10  file-15  file-2   file-24  file-29  file-5
file-11  file-16  file-20  file-25  file-3   file-6
file-12  file-17  file-21  file-26  file-30  file-7
file-13  file-18  file-22  file-27  file-31  file-8
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime 6
# -mtime 6表示從當(dāng)前日期向前推6天,即25號
./file-25
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime +6 -name "file*"| xargs ls
# 篩選出6天之前的文件
./file-1   ./file-12  ./file-15  ./file-18  ./file-20  ./file-23  ./file-4  ./file-7
./file-10  ./file-13  ./file-16  ./file-19  ./file-21  ./file-24  ./file-5  ./file-8
./file-11  ./file-14  ./file-17  ./file-2   ./file-22  ./file-3   ./file-6  ./file-9
[root@MiWiFi-R3L-srv ~]# find ./ -type f -mtime -6 -name "file*"| xargs ls
# 篩選出最近6天的文件
./file-26  ./file-27  ./file-28  ./file-29  ./file-30  ./file-31

保留最近7天的文件

[root@MiWiFi-R3L-srv ~]# find ./ -name "file*" -type f -mtime +7 | xargs rm -f
[root@MiWiFi-R3L-srv ~]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 24 00:00 file-24
-rw-r--r--. 1 root root 0 Aug 25 00:00 file-25
-rw-r--r--. 1 root root 0 Aug 26 00:00 file-26
-rw-r--r--. 1 root root 0 Aug 27 00:00 file-27
-rw-r--r--. 1 root root 0 Aug 28 00:00 file-28
-rw-r--r--. 1 root root 0 Aug 29 00:00 file-29
-rw-r--r--. 1 root root 0 Aug 30 00:00 file-30
-rw-r--r--. 1 root root 0 Aug 31 00:00 file-31

本地文件保留最近7天的備份文件, 備份服務(wù)器保留3個月的備份文件。(實(shí)際使用方案)

4. 按用戶和組進(jìn)行查找user group nouser nogroup

[root@MiWiFi-R3L-srv ~]# find /home/ -user ennan
# 查找屬主是ennan的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -group ennan
# 查找屬組是ennan的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -type d -user ennan -group ennan
# 查找屬主是ennan,屬組也是ennan的目錄
[root@MiWiFi-R3L-srv ~]# find /home/ -nouser
# 查找沒有屬主的文件
[root@MiWiFi-R3L-srv ~]# find /home/ -nogroup
# 查找沒有屬組的文件
[root@MiWiFi-R3L-srv ~]# find / -nouser -nogroup
# 查找沒有屬主和屬組的文件

查找后的處理動作

查找到一個文件后,需要對文件進(jìn)行如何處理?

動作 含義
-ls 以長格式顯示的方式打印查找到的內(nèi)容
-exec 后面跟自定義 shell 命令(標(biāo)準(zhǔn)寫法 -exec ;)

查找/var/log/類型是文件的,并且名稱是.log結(jié)尾的,并且7天以前的,然后刪除

[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 | xargs rm -f
# 首選,速度最快
[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 -exec rm -rf {} \;
# 次之,速度相對較慢
[root@MiWiFi-R3L-srv ~]# find /var/log/ -type f -name "*.log" -mtime +7 -delete
# 不推薦,刪除查找到的文件(僅能刪除空目錄)

記得文件的內(nèi)容是什么,但是不清楚文件名稱是什么,也不知道路徑在哪,怎么辦?

[root@MiWiFi-R3L-srv ~]# find /etc/ -type f | xargs grep "log_group" --color=auto
/etc/audit/auditd.conf:log_group = root

find邏輯運(yùn)算符

符號 作用
-a
-o
! 非,同-not
  1. 查找/home目錄下,屬主不是root的所有文件
[root@MiWiFi-R3L-srv ~]# find /home ! -user root -type f | xargs ls -l
  1. 查找/home目錄下,屬主屬于ennan,并且大小大于1k的文件
[root@MiWiFi-R3L-srv ~]# find /home -user ennan -size +1k -type f | xargs ls -lh
-rw-rw-r--. 1 ennan ennan 2.5K Aug  8 10:35 /home/ennan/a
-rw-rw-r--. 1 ennan ennan 3.2K Aug  8 10:40 /home/ennan/c

練習(xí)題

1.查找/var目錄下,屬主不是root,且文件名不以f開頭的文件

[root@MiWiFi-R3L-srv ~]# find /var ! -user root ! -name "f*" -type f

2.查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@MiWiFi-R3L-srv ~]# find /var -user root -group mail -type f

3.查找/var目錄下不屬于root、lp的所有文件

[root@MiWiFi-R3L-srv ~]# find /var/ ! -user root ! -user lp -type f

4.查找/var目錄下最近一周內(nèi)其內(nèi)容修改過,同時屬主不為root,也不是postfix的文件

[root@MiWiFi-R3L-srv ~]# find /var/ -mtime -7 ! -user root ! -user postfix -type f

5.查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@MiWiFi-R3L-srv ~]# find /etc/ -type f -size +1M

6.將/etc/中的所有目錄(僅目錄)復(fù)制到/tmp下,目錄結(jié)構(gòu)不變

[root@MiWiFi-R3L-srv ~]# find /etc/ -type d | xargs -i mkdir -p /tmp/{}
# -i 表示 find 傳遞給xargs的結(jié)果 由{}來代替
或者
[root@MiWiFi-R3L-srv ~]# find /etc/ -type d -exec mkdir -p /tmp/{} \;

7.將/etc目錄復(fù)制到/var/tmp/,/var/tmp/etc的所有目錄權(quán)限777/var/tmp/etc目錄中所有文件權(quán)限666

[root@MiWiFi-R3L-srv ~]# cp /etc/ /var/tmp/ -rp
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type d | xargs -i chmod 777 {}
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type f | xargs -i chmod 666 {}
或
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type d -exec chmod 777 {} \;
[root@MiWiFi-R3L-srv ~]# find /var/tmp/etc/ -type f -exec chmod 666 {} \;

8.保留/var/log/下最近7天的日志文件,其他全部刪除

[root@MiWiFi-R3L-srv ~]# find /var/log/ -mtime +7 -type f | xargs rm -rf

9.創(chuàng)建touch file{1..10}10個文件, 保留file9,其他一次全部刪除

[root@MiWiFi-R3L-srv ~]# find ./ ! -name "file9" -name "file*" | xargs rm -rf

10.解釋如下每條命令含義

mkdir /root/dir1
touch /root/dir1/file{1..10}
find /root/dir1 -type f -name "file5"
find /root/dir1 ! -name "file5"
find /root/dir1 -name "file5" -o -name "file9"
find /root/dir1 -name "file5" -o -name "file9" -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -ls
find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;
find /root/dir1  ! \( -name "file4" -o -name "file8" \) -exec rm -vf {}  \; 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容