查找的動做在平時使用的頻率也仍是很高的,因此知道並用好 find
這個命令也很重要。find
命令顧名思義,就是搜索特定文件夾內的文件。node
最基本的使用數據庫
find [path] [expression]
在 path 目錄下查找 expression 的文件。express
find -name "query" # 搜索文件名,大小寫敏感 find -iname "query" # 大小寫不敏感 find -not -name "query" # 查找不包含關鍵字的文件 find \! -name "query" # 不包含
find -type [fdlcb] "query"
type
後可以使用的類型有spa
f
常規文件d
目錄l
鏈接c
character devicesb
block devices好比要查找系統中全部以 .conf
結尾的文件code
find / -type f -name "*.conf"
find /path/to/folder -size 50M
查找 50M 的文件,size
後可以使用的單位有:it
b
512byte blocksc
byte 字節w
two bytek
kB 千字節M
MBG
GBsize
後面的參數可使用 +
或者 -
或者不加來標識,超過,少於,或者正好。io
find / -size +700M # 表示查找大於 700M 的文件 find / -size -50c # 表示查找小於 50 byte 的文件 find . -size 50M # 表示在當前目錄查找正好 50M 的文件
Linux 會存儲下面的時間:class
在按照時間查找時,可使用 -atime
, -mtime
或者 -ctime
,和以前 size
參數同樣可使用 +
或者 -
來標識超多多長時間或者少於多長時間。cli
find / -mtime 1 # 尋找修改時間超過一天的文件 find / -atime -1 # 尋找在一天時間內被訪問的文件 find / -ctime +3 # 尋找 meta 信息被修改的時間超過 3 天的文件
尋找修改時間超過 1 小時的 mp3 文件date
find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3"
其中的-mmin n
參數表示的就是文件內容在前 n 分鐘沒有修改。
find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3" -exec rm -f {} \;
經過上面的語句就可以一次性刪除超過 60 分鐘未修改的 mp3 了。
使用 -user
和 -group
參數來經過擁有者搜尋
find / -user einverne find / -group shadow
一樣按着權限查找文件
find / -perm 644 find / -perm -644 # 查找權限至少是 644 的文件
使用 -maxdepth
來限制查找的深度,默認狀況下 find 會一層層搜索,若是隻想讓 find 命令查找當前目錄或者子目錄,可使用
find -maxdepth 2 -name "query"
同理 還有一個選項 -mindepth
find -mindepth 2 -maxdepth 3 -name "query"
在搜索出結果以後,可使用以下的方式對搜索的結果執行一個命令
find [param] -exec command {} \;
好比批量修改權限
find . -type f -perm 644 -exec chmod 664 {} \; find . -type d -perm 755 -exec chmod 700 {} \; # 批量修改文件夾權限
綜合上面按時間查找文件和對搜索結果批處理,能夠獲知
find /path/to/folder/* -mtime +1 -exec rm {} \;
-mtime +1
表示的查找時間超過 1 天的內容-exec
後面表示對搜索的結果進行處理locate
命令須要額外安裝
sudo apt install mlocate
locate
命令維護了一份文件和目錄的數據庫,因此檢索速度會快一些,數據庫一般一天更新一次,能夠手動更新數據庫
sudo updatedb locate -S # 查看當前數據庫數據
locate
使用的方式和 find
大體差很少。