天天學習一個命令:find 查找文件

查找的動做在平時使用的頻率也仍是很高的,因此知道並用好 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 devices
  • b block devices

好比要查找系統中全部以 .conf 結尾的文件code

find / -type f -name "*.conf"

經過文件大小查找

find /path/to/folder -size 50M

查找 50M 的文件,size 後可以使用的單位有:it

  • b 512byte blocks
  • c byte 字節
  • w two byte
  • k kB 千字節
  • M MB
  • G GB

size 後面的參數可使用 + 或者 - 或者不加來標識,超過,少於,或者正好。io

find / -size +700M # 表示查找大於 700M 的文件 find / -size -50c # 表示查找小於 50 byte 的文件 find . -size 50M # 表示在當前目錄查找正好 50M 的文件

經過時間來查找文件

Linux 會存儲下面的時間:class

  • Access time 上一次文件讀或者寫的時間
  • Modifica time 上一次文件被修改的時間
  • Change time 上一次文件 inode meta 信息被修改的時間

在按照時間查找時,可使用 -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 了。

經過 Owner 和權限搜索

使用 -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 {} \; # 批量修改文件夾權限

批量刪除時間超過 1 天的文件

綜合上面按時間查找文件和對搜索結果批處理,能夠獲知

find /path/to/folder/* -mtime +1 -exec rm {} \;
  • find 後面接一個完整的 path
  • -mtime +1 表示的查找時間超過 1 天的內容
  • -exec 後面表示對搜索的結果進行處理

使用 locate

locate 命令須要額外安裝

sudo apt install mlocate

locate 命令維護了一份文件和目錄的數據庫,因此檢索速度會快一些,數據庫一般一天更新一次,能夠手動更新數據庫

sudo updatedb locate -S # 查看當前數據庫數據

locate 使用的方式和 find 大體差很少。

相關文章
相關標籤/搜索