Linux之文件查找
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Linux之文件查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                1.find查找概述
為什么要有文件查找,因為很多時候我們可能會忘了某個文件所在的位置,此時就需要通過find來查找。find命令可以根據不同的條件來進行查找文件,例如:文件名稱、文件大小、文件修改時間、屬主屬組、權限、等等方式。同時find命令是Linux下必須掌握的。
find 命令的基本語法如下
| find | [path...] | [options] | [expression] | [action] | 
| 查找 | 地區 | 妹紙 | 18-25歲 | 約? | 
2.find查找示例
以下列出所有find常用的選項
1.find名稱查找
#1.創建文件 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.創建測試文件(后期shell會講) [root@xuliangwei ~]# for i in {01..31};do date -s 201910$i && touch file-$i;done#2.查找7天以前的文件(不會打印當天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime +7#3.查找最近7天的文件,不建議使用(會打印當天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime -7#4.查找第7天文件(不會打印當天的文件) [root@xuliangwei ~]# find ./ -iname "file-*" -mtime 7#5.本地文件保留最近7天的備份文件, 備份服務器保留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 塊設備 [root@yfy ~]# find /dev -type b # c 字符設備 [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 #查找沒有屬主或屬組 [root@yfy ~]# find /home -nouser -o -nogroup6.find權限查找
#精切匹配644權限 [root@yfy ~]# find . -perm 644 -ls #包含444權限即可 [root@yfy ~]# find . -perm -444 -ls #查找全局可寫(每位權限必須包含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動作處理,比如查找到一個文件后,需要對文件進行如何處理, find的默認動作是 -print
| 打印查找到的內容(默認) | |
| -ls | 以長格式顯示的方式打印查找到的內容 | 
| -delete | 刪除查找到的文件(僅能刪除空目錄) | 
| -ok | 后面跟自定義 shell 命令(會提示是否操作) | 
| -exec | 后面跟自定義 shell 命令(標準寫法 -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實現文件拷貝,但會提示是否拷貝 [root@yfy ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; ? #5.使用-exec實現文件拷貝和文件刪除。 [root@yfy ~]# find /etc -name "ifcfg*" -exec cp {} /tmp \; [root@yfy ~]# find /etc -name "ifcfg*" -exec rm -f {} \;8.使用find命令結合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邏輯運算符
| -a | 與 | 
| -o | 或 | 
| -not | ! | 非 | 
10.find相關練習題
1.查找/tmp目錄下,屬主不是root,且文件名不以f開頭的文件 2.查找/var目錄下屬主為root,且屬組為mail的所有文件 3.查找/var目錄下不屬于root、lp、gdm的所有文件 4.查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件 5.查找/etc目錄下大于1M且類型為普通文件的所有文件 6.將/etc/中的所有目錄(僅目錄)復制到/tmp下,目錄結構不變 7.將/etc目錄復制到/var/tmp/,/var/tmp/etc的所有目錄權限777/var/tmp/etc目錄中所有文件權限666 8.保留/var/log/下最近7天的日志文件,其他全部刪除 9.創建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 {} \;總結
以上是生活随笔為你收集整理的Linux之文件查找的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java设计模式之委派模式
- 下一篇: SpringBoot之发送邮件
