常用參數
type
f
: filed
: directoryl
: symbolicp
: pipes
: socket
name
iname
: ignore casepath
mtime
: modify time (day)atime
: access time (day)ctime
: create time (day)mmin
: (minute)amin
: (minute)cmin
: (minute)size
or
: 可以簡寫為 -onot
: 可以簡寫為 !exec
: executedelete
基本用法
# name
find . -name findme # 找 'findme'
find . -name '*.js' # 找當前目錄底下的 js 檔
find . -name '*.py' -or -name '*.r' # 增加條件
find . -name '*.js' -not -path '*/node_modules/*' # 排除條件
# path
find . -path '**/lib/**/*.ext' # 找當前目錄底下路徑包含 lib 且為 .ext 的檔案
# time
find . -mtime 2 # 找 2 天前修改過的檔案
find . -mtime -1 # 找當前目錄底下 1 天內有修改過的檔案
find . -mtime +1 # 找當前目錄底下超過 1 天前有修改過的檔案
# type && size && iname
find /var -type f -size +50MB # 找 /var 底下大於 50MB 的檔案
find ~/Download -size +500k -size -10MB -iname '*.Tar.gZ'
# exec
# {} 代表的是所取得的 file 路徑
# (find 配合 rm 使用請非常小心)
find /tmp -mtime +180 -exec rm {} \; # 刪除 /tmp 底下修改時間超過 180 天的檔案
進階參數
ok
execdir
okdir
user
group
regex
empty
perm
: permission
一些使用情境
# 不小心把檔案解壓,想要刪除 5 分鐘內建立的檔案..
find . -cmin -5 -exec rm -i {} \;
其他進階用法
# ok
# 執行指令前需要一一確認
find . -name '*.txt' -ok rm {} \;
# empty
# 在所有空目錄裡增加 .gitkeep
find . -type d -empty -exec touch {}/.gitkeep \;
# perm
find . -type f -perm 0777
find . -type f -not -perm 0777
# user
# 搜尋特定使用者的檔案
find /home -user rextsou -name '*.txt'
# group
# 指定檔案群組
find /home -group developer