21篇測試必備的Linux常用命令,每天敲一篇,每次敲三遍,每月一循環,全都可記住!!
https://www.cnblogs.com/poloyy/category/1672457.html
首先,先造一點數據
mkdir -p ~/test/cool touch ~/test/cool/test{1..5}.txt touch ~/test/cool/{1..3}.sh
chmod 777 *.sh
history > test.txt
ls >> test1.txt
ls >> test1.txt

最基礎的打印操作
find ~/test
知識點
- -print 是默認就有的,不寫也可以,而 -print 默認是以 \n 來分隔找到的文件
- 如果不想換行打印,可以考慮空格分隔,加上 -print0 即可
find ~/test -print0
執行結果

通過文件名搜索
- -name:僅可以對文件的file_name匹配
- -path:可以對文件的dir_name、file_name匹配
查找的文件名最好使用引號包圍,可以配合通配符進行查找
查找~/test下的.txt文件
find ~/test -name "*.txt"
在~/test下查找cool文件夾下的.txt文件
find ~/test -path "/*cool*/*.txt"
倘若,我們通過-name來執行會是怎么樣的呢?是會報錯的
因為 -name 是不能使用 / 的,除非文件名包含了 / , 因為 -name 只能匹配 file_name (即文件名),並不匹配 dir_name (即目錄名)
所以想要在指定目錄(~/test)下搜索某目錄中(/cool)的某文件(.txt),應該使用-path而不是-name

通過文件的類型來搜索
在~/test目錄下查找所有的目錄
find ~/test -type d
在~/test目錄下查找所有的文件
find ~/test -type f
還有其他不常用的文件類型
- b:塊設備
- c:字符設備
- p:管道
- l:符號鏈接
通過文件的時間來搜索
在~/test目錄下查找修改時間在5日以內的文件
find ~/test -mtime -5
在~/test目錄下查找修改時間在3日以前的.txt文件
find ~/test -type f -name "*.txt" -mtime +3
在~/test目錄下查找更改時間在5分鍾以內的.txt文件
find ~/test -type f -name "*.txt" -mmin -5
在~/test目錄下查找修改時間在10分鍾以前的文件
find ~/test -mmin +10
注意點
- Linux的文件有三種時間類型,具體可看此文章:https://www.cnblogs.com/poloyy/p/12586677.html
- 無論是 -mtime +5 還是 -mtime -5 ,第五天內修改過的文件都不會被搜索出來,可看下圖

通過文件的大小來搜索
語法格式
-size n[cwbkMG]
那么它有什么類型大小單位呢?(官方直接給了答案)
b:512字節的塊(默認),1b = 512c
c:bytes,指定字節大小
w:等價於兩個bytes,1w=2c,一般用戶匹配中文
k:平時常說的1kb,1k=1024c=2b
M:1MB,1M=1024k=2048b
G:1GB,1GB=1024MB=2048*1024b
在~/test目錄下查找所有size=0字節的文件
find ~/test -size 0
在~/test目錄下查找所有size<100k的文件
find ~/test -size -100k
在~/test目錄下查找所有size>1MB的文件
find ~/test -size +1M
通過編程中的“與、或、非”來搜索
- -a:與,即&&(默認都是與)
- -o:或:即||
- -not:非,即條件結果取反
在~/test目錄下查找文件大小在1kb和10kb內的所有文件
find ~/test -size +1k -size -10k find ~/test -size +1k -a -size -10k
在~/test目錄下查找大於1kb或類型為普通文件的文件
find ~/test -size +1k -o -type f
在~/test目錄下查找非空文件
find ~/test -not -size 0
在~/test目錄下查找文件或目錄
find ~/test -type f -o -type d

搜索空文件
find ~/test -empty -type f
通過文件所屬用戶搜索
find ~/test -user root
通過文件所屬組group搜索
find ~/test -group root
