BACK
Featured image of post 【find】在 Linux 使用 find 指令尋找目錄或檔案的速查筆記

【find】在 Linux 使用 find 指令尋找目錄或檔案的速查筆記

在 Linux 平台下找檔案不外乎使用威力強大的 find 命令,威力強大的背後就是有一點點學習曲線,不過整體上來說還算簡單,因此想寫一篇文章留下備忘,讓自己日後可以快速查閱參考。

參考網站
參考網站
參考網站

在 Linux 平台下找檔案不外乎使用威力強大的 find 命令,威力強大的背後就是有一點點學習曲線,不過整體上來說還算簡單,因此想寫一篇文章留下備忘,讓自己日後可以快速查閱參考。


基本語法

查詢檔案名稱 (也可以查詢「目錄名稱」,其中 * 是萬用字元)

1
find $HOME -name '*.mp3'

註:$HOME 是 Linux 下的一個環境變數,預設指向執行帳號的 HOME 目錄

查詢檔案名稱 (不區分大小寫)

1
find /etc -iname 'Network'

指定只要搜尋「檔案」名稱

1
find /var/log -iname '*.log' -type f

指定只要搜尋「目錄」名稱

1
find /etc -iname 'apache2' -type d

補充說明:可用的 -type 參數值如下

指令參數說明
bblock (buffered) special
ccharacter (unbuffered) special
ddirectory (一般目錄)
pnamed pipe (FIFO)
fregular file (一般檔案)
lsymbolic link
ssocket
Ddoor (Solaris)

找尋所有檔案大小大於 50MB 的檔案

1
find /var -type f -size +50M

註:不加上 -name 參數即代表搜尋所有檔案

找尋所有檔案大小小於 50MB 的檔案

1
find /var -type f -size -50M

尋找超過 7 天沒有被存取或修改過的檔案 (判斷檔案存取時間)

1
find $HOME -type f -atime +7

尋找曾經在 7 天內被存取或修改過的檔案 (判斷檔案存取時間)

1
find $HOME -type f -atime -7

尋找超過 10 分鐘沒有被存取或修改過的檔案 (判斷檔案存取時間)

1
find $HOME -type f -amin +10

尋找曾經在 10 分鐘內被存取或修改過的檔案 (判斷檔案存取時間)

1
find $HOME -type f -amin -10

尋找檔案建立時間已超過 30 天的檔案

1
find $HOME -type f -ctime +30

尋找特定使用者的檔案 (以帳號名稱 wayne 為例)

1
find $HOME -type f -user wayne

進階應用

刪除 30 天以上未經存取過的暫存檔案

注意:以下指令最後一個分號(;)前一定要加上反斜線

1
find /tmp -type f -atime +30 -print -exec rm -f '{}' \;
  • 加上 -print 是為了讓被刪除的檔案檔名一併顯示在畫面上,這個參數可以省略
  • 使用 -exec 會讓查詢到的每一個檔案路徑代入 {} 位置,一個檔案會執行一遍 rm 命令

刪除 30 天以上未經存取過的暫存檔案

使用 xargs 當成單一命令的參數

1
find /tmp -type f -print0 | xargs -0 rm -v
  • 加上 -print0 是為了讓輸出的結果不以「斷行字元」分隔,而改以 null 為結果的分隔字元
  • 使用 xargs 命令加上 -0 是為了讓傳入的資料以 null 字元當成參數的分隔
  • 使用 rm 命令加上 -v 是為了能顯示出被刪除的檔案名稱,這個參數可以省略
  • 使用 xargs 會將所有 find 命令查到的檔案轉換成 rm 的參數列,如果檔案過多可能會執行失敗!
  • 使用 xargs 可確保後面的程式 (rm) 只執行一次,所以理論上執行速度較快!

相同參數需輸入多筆並且以「或」邏輯運算時要用 -o 參數串接起來。

例(一):同時找兩種檔名樣式的檔案

1
find $HOME -name '*.mp3' -o -name '*.ogg'

例(二):同時找兩個擁有者的檔案

1
find /usr/local -user user1 -o -user user2

注意事項

使用萬用字元時務必加上單引號( )

!!!以下是錯誤示範!!!

1
find $HOME -name *.txt

comments powered by Disqus