linux shell學習之find

find命令可以用於查找特定的文件和目錄。
一、基礎用法

find /home/$USER 
會列出用戶主目錄下的所有文件和目錄
find /home/$USER -print
print選項是打印的意思,默認換行打印
find /home/$USER -print0
使用print0會將換行符改爲空字符進行輸出

二、其他選項
name選項

find /home/$USER -name "*.txt" -print
name選項指定要查找的文件的名稱,可以使用具體的名稱,
也可以使用正則表達式。
上面的命令會查找用戶目錄下的所有以.txt結尾的文件。

如果想找到所有以.txt結尾的文件和以.sh結尾的文件,
可以這樣寫
find /home/$USER \( -name "*.txt" -o -name "*.sh" \)

path選項

find /home/$USER -path "*/hello/*" 
path選項會指定要查找的路徑

regex選項

使用regex選項來使用正則表達式進行匹配
find /home/$USER -regex ".*\(\.sh\|\.txt\)"
該操作也會找出用戶目錄下的所有以.sh和.txt結尾的文件,
這裏使用的是BRE(基本正則表達式),所以對()|以及.都使用了轉義。

!取反操作

find /home/$USER ! -name "*.txt"
該操作會找到除了以.txt結尾的所有文件

mindepth 和maxdepth

使用這兩個選項可以指定find搜索的目錄深度
mindepth是最小深度,maxdepth爲最大深度
find /home/$USER -mindepth 2 -maxdepth 2 
該操作指定find只在/home/$USER的二級目錄中查找文件和目錄

type過濾類型

find /home/$USER -type f 
該操作會在/home/$USER 中查找類型爲普通文件的文件
類似操作還有
find /home/$USER -type d
查找目錄
find /home/$USER -type l
查找鏈接文件

-atime(訪問時間) -mtime(修改時間) -ctime(變化時間)
以天爲單位

find /home/$USER -atime +7
查找7天內訪問過的文件
find /home/$USER -atime -7
查找7天前訪問過的文件
find /home/$USER -atime 7
查找7天前訪問的文件

-amin -mmin -cmin
同上,但以分鐘爲單位

-size

find /home/$USER -size +2k
find /home/$USER -size 2k
find /home/$USER -size -2k
查找大於等於小於2k的文件
除了kb,還有M G等單位大小

delete刪除匹配文件

find /home/$USER -size +2k -delete
刪除目錄下大於2kb的文件

perm文件權限匹配

find /home/$USER -perm 755 
查找文件權限爲755的文件

user指定文件所有者

find /home/$USER -user root
查找root用戶的所有文件

exec執行選項

find /home/$USER -name "*.c" -exec cat {} \;> all.txt
該命令會將所有.c文件輸入到all.txt文件中
{}會代指每個找到的.c文件

prune跳過

find /home/$USER \(-name "*.git" -prune\) -o \(-type f -print\)
該操作會跳過*.git輸出所有類型爲普通文件的文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章