史上最全!find查詢並列出檔案

2021-10-07 04:23:31 字數 2730 閱讀 4460

好久沒更新部落格了,今晚來寫一篇吧。

正文之前,先來將乙個小插曲。我在面試當前崗位的時候,遇到了乙個面試題目:

查詢出最近三天建立的.log結尾的檔案並刪除。

看到的時候,內心狂喜,這不很簡單嗎?我就三分鐘寫下答案然後就交卷了。結果很是意外,答案是錯的!我清楚的記得我寫的答案是這樣的:

find / -mtime 3 -name *.log | xargs rm -f
並且在自己的虛擬機器上跑了一下,操作也成功了!我就很好奇,到底是**出問題了呢?後來我仔仔細細查了一下,原因出在-name 後面的選項上,應該加上單引號,否則會報錯。請看下面的例子:

[root@d ~]# ls

a324.sql centos-7.repo elasticsearch-5.6.8.zip.1 output.session

a324.sql.tar.gz c.sh git-2.26.2-64-bit.exe s.sh

aa.sh elasticsearch-5-6-8 grafana-5.0.4-1.x86_64.rpm s.sh.tar.gz

a.ss elasticsearch-5.6.8 grafana-5.0.4-1.x86_64.rpm.nak time.log

a.tar.gz elasticsearch-5.6.8.rpm mbox wget-log

a.txt elasticsearch-5.6.8.zip nohup.out zz.sh

[root@d ~]# find ./ -name *.rpm

find: paths must precede expression: grafana-5.0.4-1.x86_64.rpm

usage: find [-h] [-l] [-p] [-olevel] [-d help|tree|search|stat|rates|opt|exec] [path...] [expression]

[root@d ~]# find ./ -name '*.rpm'

./elasticsearch-5.6.8.rpm

./grafana-5.0.4-1.x86_64.rpm

好了。開始步入正題(外面又下雨求了!好煩)

find命令的工作方式如下:沿著檔案層次結構向下遍歷,匹配符合條件的檔案,執行相應的操作。預設的操作是列印出相應的檔案或者目錄,這也可以使用-print選項來指定!

2、-name  查詢.txt結尾的檔案

find / -name '*.txt'
3、查詢.txt結尾的檔案,忽略.txt的大小寫

find / -iname '*.txt'
4、-o 邏輯或操作符

[root@d tests]# find ./ -name '*.txt' -o  -name '*.js' 

./c.txt

./a.js

5、邏輯與 -a ,和-o差不多

6、正則-regex,匹配以.py或者.sh結尾的檔案。-iregex忽略大小寫。

find . -regex '.*\.\(py\|sh\)$'
7、!:否定引數 查詢當前目錄下非.txt結尾的檔案

find ./ ! -name '*.txt'
8、基於目錄深度搜尋 -maxdepth n,-mindepth n。預設情況下,find 命令不會跟隨符號鏈結,-l選項可以強制改變這種行為。

9、-type,後面可以跟-f -d -l -s -b 

10、-atime使用者最近一次訪問檔案的時間  -ctime檔案元資料最後一次改變的時間 -mtime檔案內容最後一次被修改的時間。

find ./ -atime 7表示第七天被訪問的檔案

find ./ -atime +7表示七天前被訪問的檔案

find ./ -atime -7表示七天內被訪問的檔案

-amin  -cmin -mmin

11、-newer

12、-size基於大小搜尋

find ./ -type f -size 7k 剛好7k

find ./ -type f -size +7k 大於7k

find ./ -type f -size -7k 小於7k

13、-perm基於許可權

find . -type f -perm 644 查詢許可權為644的檔案

14、-user zhaoyun找出zhaoyun擁有的所有檔案

find . -user zhaoyun 

15、find相應的操作

-print:預設動作,列印

-delete:刪除

[root@d tests]# ls

a.html a.js a.txt c.txt

[root@d tests]# find . -name *.txt -delete

[root@d tests]# ls

a.html a.js a.txt

16、-exec執行命令

find命令hui

史上最全scss教程

1.資料型別 sassscript 支援 6 種主要的資料型別 將帶引號的字串轉化為無引號字串 mixin b selector includeb header 2.變數 通常在專案中會建立variable.scss用來儲存一些全域性變數 普通變數 g primary 409eff 解構 value...

linux命令史上最全

關閉檔案 q 退出,沒動過檔案 w 儲存 wq 儲存並退出,q!不儲存並退出 w 強行儲存 開啟檔案 vi 開啟檔案,定位至最後一行 vi 開啟檔案,定位到 行 壓縮檔案命令 gzip 解壓檔案命令 gunzip 打包命令 tar cvf a.tar 打包進去的檔案,資料夾名 解包命令 tar xc...

史上最全講解 IOC

spring ioc自動注入 spring ioc掃瞄器 bean的作用域 bean的生命週期 通俗易懂的理解ioc 由於引進了中間位置的 第三方 也就是ioc容器,使得a b c d這4個物件沒有了耦合關係,齒輪之間的傳動全部依靠 第三方 了,全部物件的控制權全部上繳給 第三方 ioc容器,所以,...