Day13-find查找

一、為什么要有文件查找?

資料很多,忘記放哪了,所以需要通過查找的方式進行搜索

二、windows如何實現文件查找?

計算機-->搜索框

三、linux如何實現文件查找?

1.沒有圖形工具?

2.使用命令工具搜索--->find

四、find命令查找語法?

命令? ? ? ? ? ? ? ? ? 路徑? ? ? ? ? ? ? ? ? ?選項? ? ? ? ? ? ? ? ? ? ? ? 表達式? ? ? ? ? ? ? ? ? ? ? ? ? ?動作?

find? ? ? ? ? ? ? ? ? [path...]? ? ? ? ? ? [options]? ? ? ? ? ? ? ? ?[expression]? ? ? ? ? ? ? ? ? ? ?[action]? ??

查找? ? ? ? ? ? ? ? ? 地區(qū)? ? ? ? ? ? ? ? ? 男or女? ? ? ? ? ? ? ? ? ? ? 18-25歲? ? ? ? ? ? ? ? ? ? ? ? ? ???

五、find針對文件名稱、類型、大小、修改時間等方式進行查找文件?


(1)按名稱查找

#1.按照名稱進行查找

[root@localhost ~]# find ./ -name "*etho"

#2.按照名稱查找(不區(qū)分大小寫)

[root@localhost ~]# find ./ -iname "*etho"

(2)按文件大小查找size

#1.查找/etc/目錄下大于5M的文件

[root@localhost ~]# find /etc/ -size +5M

#2.查找/etc/目錄下小于5M的文件

[root@localhost ~]# find /etc/ -size -5M

#3.查找/etc/目錄下等于5M的文件

[root@localhost ~]# find /etc/ -size 5M

(3)按文件類型查找

f ? ?# 文件?

d ? ?# 目錄?

s ? ?# socket套接字文件?

l ? ?# 鏈接文件?

c ? ?# 字符設備?

b ? ?# 塊設備

#1.查找當前目錄下類型是文件的,并且名稱跟eth0相關的都列出來


#2.查找/etc/目錄下類型是文件的,大小大于5M,名稱以.bin結尾的


#.3查找/etc/目錄下類型是文件的,名稱是.repo結尾的


#4.查找/dev下的類型是塊設備的,并名稱是sda開頭的


#5.查找/dev下的類型是字符設備,并名稱是tty開頭的


(4)按修改時間進行查找-mtime

[root@localhost ~]# for i in {1..31} ; do date -s "2019/08/$i" ; touch file-$i ; done

#.1 第7天


#2. 7天以前的內容都會被篩選出來,然后刪除(保留了最近7天的內容)


#3. 最近7天的內容都會被篩選出來


#4. 本地文件保留最近7天的備份文件,備份服務器保留3個月的備份文件(實際使用方案)

[root@localhost ~]# find /backup/ -iname "*.bak" -mtime +7 -delete

[root@localhost ~]# find /backup/ -iname "*.bak" -mtime +180 -delete

(5) 按用戶和組進行查找 -user -group -nouser -nogroup

#查找屬主是jacky


#查找屬組是root


#查找屬主是jacky,屬組是jack


#查找沒有屬主


#查找沒有屬組


#查找沒有屬組或屬組


(6)find查找后的處理動作?

查找到一個文件后,需要對文件進行如何處理,find的默認動作時-print

動作 含義?

-print 打印查找到的內容(默認) ---ignore?

-ls 以長格式顯示的方式打印查找到的內容 ---ignore | xargs ls -l?

- 刪除查找到的文件 (刪除目錄,僅能刪除空目錄) ---ignore | xargs delete rm -f?

-ok 后面跟自定義 shell 命令(會提示是否操作) ---ignore?

-exec 后面跟自定義 shell 命令(標準寫法 -exec \;) | xargs



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




3.記得文件的內容是什么,但是不清楚文件名稱是什么,也不知道路徑在哪,怎么辦?


#find 是查詢文件?

#grep 過濾內容


#將ifnd查詢的文件結果,作為grep的參數


4.find邏輯運算符

符號? ? ? ? ? ? ? ? ?作用

-a? ? ? ? ? ? ? ? ? ? ? ?與

-o? ? ? ? ? ? ? ? ? ? ? ?或

-not|!? ? ? ? ? ? ? ?非

#1.查找當前目錄下,屬主不是root的所有文件



#2.查找當前目錄下,屬主屬于jack,并且大小大于1k的文件


#3.查找當前目錄下的屬主為root或者以xml結尾的普通文件



六、find練習


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

[root@localhost ~]# find /var -type f ! -user root -a ! -name "f*"

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

[root@localhost ~]# find /var -type f -user root -a -group mail

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

[root@localhost ~]# find /var -type f ! -user root -a ! -user lp

4、查找/var目錄下最近一周內產生的文件,同時屬主不為root,也不是postfix的文件

[root@localhost ~]# find /var -type f -mtime -7 -a ! -user root -a ! -name "postfix"

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

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

6、將/etc/中的所有目錄(僅目錄)復制到/tmp下,目錄結構不變

[root@localhost ~]# find /etc/ -type d -exec mkdir -p /tmp/{} \;

7、將/etc目錄復制到/var/tmp/,/var/tmp/etc的所有目錄權限777/var/tmp/etc目錄中所有文件權限666

[root@localhost ~]# cp /etc/ /var/tmp/ -rp

[root@localhost ~]# find /var/tmp/etc -type d -exec chmod 777 {} \;

[root@localhost ~]# find /var/tmp/etc -type f -exec chmod 777 {} \;

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

[root@localhost ~]# find /var/log/ -type f -mtime +7 -exec rm -f {} \;

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

[root@localhost ~]# find ./ -type f -name "file*" ! name "file9" -exec rm -f {} \;

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容