茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671296 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
Dell_M4500_00011.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2018/10/3 6:12:48

在 Linux 下使用 find 指令查詢目錄與檔案的速查筆記

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

【 基本語法 】

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

'*.mp3'

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

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

'Network'

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

'*.log' -type f

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

'apache2' -type d

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

b      block (buffered) special

c      character (unbuffered) special

d      directory ( 一般目錄 )

p      named pipe (FIFO)

f      regular file ( 一般檔案 )

l      symbolic link

s      socket

D      door (Solaris)

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

find /var -type f -size +50M

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

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

find /var -type f -size -50M

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

find $HOME -type f -atime +7

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

find $HOME -type f -atime -7

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

find $HOME -type f -amin +10

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

find $HOME -type f -amin -10

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

find $HOME -type f -ctime +30

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


find $HOME -type f -user tom

【 進階應用 】

刪除 30 天以上未經存取過的暫存檔案 ( 注意: 以下指令最後一個分號(;)前一定要加上反斜線 )

'{}' \;

   註1: 加上 –print 是為了讓被刪除的檔案檔名一併顯示在畫面上,這個參數可以省略
   註2: 使用 –exec 會讓查詢到的每一個檔案路徑代入 ‘{}’ 位置,一個檔案會執行一遍 rm 命令

刪除 30 天以上未經存取過的暫存檔案 ( 使用 xargs 當成單一命令的參數 )

find /tmp -type f -print0 | xargs -0 rm -v

   註1: 加上 –print0 是為了讓輸出的結果不以「斷行字元」分隔,而改以 null 為結果的分隔字元

   註2: 使用 xargs 命令加上 –0 是為了讓傳入的資料以 null 字元當成參數的分隔
   註3: 使用 rm 命令加上 –v 是為了能顯示出被刪除的檔案名稱,這個參數可以省略
   註4: 使用 xargs 會將所有 find 命令查到的檔案轉換成 rm 的參數列,如果檔案過多可能會執行失敗!
   註5: 使用 xargs 可確保後面的程式 ( rm ) 只執行一次,所以理論上執行速度較快!

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

例1:同時找兩種檔名樣式的檔案

'*.ogg'

例2:同時找兩個擁有者的檔案

local -user user1 -o -user user2

 

【 注意事項 】

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

    !!以下是錯誤示範!!

  • [user1@server ~]# find $HOME -name *.txt
    find: paths must precede expression
    Usage: find [path...] [expression]

 

相關連結


原文出處: The Will Will Web | 在 Linux 下使用 find 指令查詢目錄與檔案的速查筆記
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|