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輸出所有類型爲普通文件的文件