當(dāng)前位置:
首頁 >
Linux之文件查找
發(fā)布時間:2025/3/20
65
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Linux之文件查找
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.find查找概述
為什么要有文件查找,因為很多時候我們可能會忘了某個文件所在的位置,此時就需要通過find來查找。find命令可以根據(jù)不同的條件來進(jìn)行查找文件,例如:文件名稱、文件大小、文件修改時間、屬主屬組、權(quán)限、等等方式。同時find命令是Linux下必須掌握的。
find 命令的基本語法如下
| find | [path...] | [options] | [expression] | [action] |
| 查找 | 地區(qū) | 妹紙 | 18-25歲 | 約? |
2.find查找示例
以下列出所有find常用的選項
1.find名稱查找
#1.創(chuàng)建文件 touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1} ? #2.查找/etc目錄下包含ifcfg-eth0名稱的文件 [root@yfy ~]# find /etc -name "ifcfg-eth1" ? #3.-i 忽略大小寫 [root@yfy ~]# find /etc -iname "ifcfg-eth1" #查找/etc目錄下包含ifcfg-eth名稱所有文件 [root@yfy ~]# find /etc/ -name "ifcfg-eth*" [root@yfy ~]# find /etc -iname "ifcfg-eth*"2.find大小查找
#1.查找大于5M的文件 [root@yfy ~]# find /etc -size +5M ? #2.查找等于5M的文件 [root@yfy ~]# find /etc -size 5M ? #3.查找小于5M的文件 [root@yfy ~]# find /etc -size -5M3.find時間查找
#1.創(chuàng)建測試文件(后期shell會講) [root@xuliangwei ~]# for i in {01..31};do date -s 201910$i && touch file-$i;done#2.查找7天以前的文件(不會打印當(dāng)天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime +7#3.查找最近7天的文件,不建議使用(會打印當(dāng)天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime -7#4.查找第7天文件(不會打印當(dāng)天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime 7#5.本地文件保留最近7天的備份文件, 備份服務(wù)器保留3個月的備份文件(實際使用方案) find /backup/ -iname "*.bak" -mtime +7 -delete find /backup/ -iname "*.bak" -mtime +90 -delete4.find類型查找
# f 文件 [root@yfy ~]# find /dev -type f # d 目錄 [root@yfy ~]# find /dev -type d # l 鏈接 [root@yfy ~]# find /dev -type l # b 塊設(shè)備 [root@yfy ~]# find /dev -type b # c 字符設(shè)備 [root@yfy ~]# find /dev -type c # s 套接字 [root@yfy ~]# find /dev -type s # p 管道文件 [root@yfy ~]# find /dev -type p5.find用戶查找
#查找屬主是jack [root@yfy ~]# find /home -user jack #查找屬組是admin [root@yfy ~]# find /home -group admin #查找屬主是jack, 屬組是admin [root@yfy ~]# find /home -user jack -group admin #查找屬主是jack, 并且屬組是admin [root@yfy ~]# find /home -user jack -a -group admin #查找屬主是jack, 或者屬組是admin [root@yfy ~]# find /home -user jack -o -group admin #查找沒有屬主 [root@yfy ~]# find /home -nouser #查找沒有屬組 [root@yfy ~]# find /home -nogroup #查找沒有屬主或?qū)俳M [root@yfy ~]# find /home -nouser -o -nogroup6.find權(quán)限查找
#精切匹配644權(quán)限 [root@yfy ~]# find . -perm 644 -ls #包含444權(quán)限即可 [root@yfy ~]# find . -perm -444 -ls #查找全局可寫(每位權(quán)限必須包含w) [root@yfy ~]# find . -perm -222 -ls #包含set uid [root@yfy ~]# find /usr/sbin -perm -4000 -ls #包含set gid [root@yfy ~]# find /usr/sbin -perm -2000 -ls #包含sticky [root@yfy ~]# find /usr/sbin -perm -1000 -lsfind動作處理,比如查找到一個文件后,需要對文件進(jìn)行如何處理, find的默認(rèn)動作是 -print
| 打印查找到的內(nèi)容(默認(rèn)) | |
| -ls | 以長格式顯示的方式打印查找到的內(nèi)容 |
| -delete | 刪除查找到的文件(僅能刪除空目錄) |
| -ok | 后面跟自定義 shell 命令(會提示是否操作) |
| -exec | 后面跟自定義 shell 命令(標(biāo)準(zhǔn)寫法 -exec \;) |
7.find查找后的動作命令示例
#1.使用-print打印查找到的文件 [root@yfy ~]# find /etc -name "ifcfg*" [root@yfy ~]# find /etc -name "ifcfg*" -print ? #2.使用-ls打印查找到的文件,以長格式顯示 [root@yfy ~]# find /etc -name "ifcfg*" -ls ? #3.使用-delete刪除文件,但僅能刪除空目錄 [root@yfy ~]# find /etc -name "ifcfg*" -delete ? #4.使用-ok實現(xiàn)文件拷貝,但會提示是否拷貝 [root@yfy ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; ? #5.使用-exec實現(xiàn)文件拷貝和文件刪除。 [root@yfy ~]# find /etc -name "ifcfg*" -exec cp {} /tmp \; [root@yfy ~]# find /etc -name "ifcfg*" -exec rm -f {} \;8.使用find命令結(jié)合xargs
#xargs將前者命令查找到的文件作為一個整體傳遞后者命令的輸入 [root@yfy ~]# touch file.txt [root@yfy ~]# find . -name "file.txt" |xargs rm -f [root@yfy ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp9.find邏輯運(yùn)算符
| -a | 與 |
| -o | 或 |
| -not | ! | 非 |
10.find相關(guān)練習(xí)題
1.查找/tmp目錄下,屬主不是root,且文件名不以f開頭的文件 2.查找/var目錄下屬主為root,且屬組為mail的所有文件 3.查找/var目錄下不屬于root、lp、gdm的所有文件 4.查找/var目錄下最近一周內(nèi)其內(nèi)容修改過,同時屬主不為root,也不是postfix的文件 5.查找/etc目錄下大于1M且類型為普通文件的所有文件 6.將/etc/中的所有目錄(僅目錄)復(fù)制到/tmp下,目錄結(jié)構(gòu)不變 7.將/etc目錄復(fù)制到/var/tmp/,/var/tmp/etc的所有目錄權(quán)限777/var/tmp/etc目錄中所有文件權(quán)限666 8.保留/var/log/下最近7天的日志文件,其他全部刪除 9.創(chuàng)建touch file{1..10}10個文件, 保留file9,其他一次全部刪除 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 {} \;總結(jié)
以上是生活随笔為你收集整理的Linux之文件查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java设计模式之委派模式
- 下一篇: Kafka的基本介绍和在linux的安装