天天看點

LInux運維之find指令詳解

作者:羊毛與狗

關注我,不迷路,大家好,我是大王。--Linux運維

一、背景說明

對于一個運維人員來說,跟 find 打交道的次數肯定不少,今天來說一說 find 的那些事。

LInux運維之find指令詳解

二、find簡介

find指令是Linux系統中的強大工具,用于在檔案系統中查找和定位檔案和目錄。它可以通過不同的選項和參數來滿足不同的需求,例如按名稱查找、按類型查找、按時間查找等。

四、find基本文法

find [path] [expression]           

參數說明:

  • path:要搜尋的路徑。
  • expression:要執行的操作表達式。是可選參數

expression 中可使用的選項有很多,以下列出最常用的部份:

  • -name :按檔案名查找。支援使用通配符 * 和 ?。
  • -type :按檔案類型查找。可以是 f(普通檔案)、d(目錄)、l(符号連結)等。
  • -size :按檔案大小查找,支援使用 + 或 - 表示大于或小于指定大小,機關可以是 c、w、b、k、M或 G。
  • -mtime :按修改時間查找,支援使用 + 或 - 表示在指定天數前或後。
  • -exec:執行指令進行操作

時間的額外參數:

  • -amin n:查找在 n 分鐘内被通路過的檔案。
  • -atime n:查找在 n*24 小時内被通路過的檔案。
  • -cmin n:查找在 n 分鐘内狀态發生變化的檔案(例如權限)。
  • -ctime n:查找在 n*24 小時内狀态發生變化的檔案(例如權限)。
  • -mmin n:查找在 n 分鐘内被修改過的檔案。
  • -mtime n:查找在 n*24 小時内被修改過的檔案。

在這些參數中,n 可以是一個正數、負數或零。正數表示在指定的時間内修改或通路過的檔案,負數表示在指定的時間之前修改或通路過的檔案,零表示在目前時間點上修改或通路過的檔案。

例如:-mtime 0 表示查找今天修改過的檔案,-mtime -7 表示查找一周以前修改過的檔案。

關于時間 n 參數的說明:

  • +n:查找比 n 天前更早的檔案或目錄。
  • -n:查找在 n 天内更改過屬性的檔案或目錄。
  • n:查找在 n 天前(指定那一天)更改過屬性的檔案或目錄。

四、find執行個體示範

4.1 按檔案名進行查找

注:支援使用通配符 * 和 ?。

## 在 / 目錄下面查找具體檔案【範圍自定義】
find / -name yunjia-yunwei.sh

## 用正則 在 / 目錄下面進行模糊查找【範圍自定義】
find / -name yunjia-*           
LInux運維之find指令詳解

4.2 按檔案類型進行查找

  • 注:參數 f(普通檔案)、d(目錄)、l(符号連結)
# 查找目前目錄下的檔案
find . -type f

# 查找目前目錄下的目錄
find . -type d           
LInux運維之find指令詳解

4.3 按修改時間進行查找

+ 或 - 表示在指定天數前或後

# 查找目前目錄中7天以内修改過的所有檔案
find . -mtime -7

# 查找目前目錄中7天以前修改過的所有檔案
find . -mtime +7           
LInux運維之find指令詳解

4.4 按檔案大小進行查找

支援使用 + 或 - 表示大于或小于指定大小,機關可以是 c(位元組)、w(字數)、b(塊數)、k(KB)、M(MB)或 G(GB)。

# 查找目前目錄中大小大于1MB的所有檔案:
find . -size +1M

# 查找目前目錄中大小大于1MB的所有檔案:
find . -size -1M           

4.5 執行指令進行操作

對查找出來的内容進行二次操作

# 查找目前目錄中名稱為 asr_ime.sql 的檔案并執行删除指令:
find . -name asr_ime.sql  -exec rm -rf {} \;           
LInux運維之find指令詳解

繼續閱讀