Linux系統上使用find命令查找文件的N種案例
1. 前言
本文主要講解在Linux系統上如何使用find命令。
2. find命令的使用方法
要開始搜索整個硬盤,您需要輸入以下內容:
- find /
但是,如果您想開始搜索當前所在的文件夾,那么可以使用find命令以下語法:
- find .
當您想在整個硬盤中按名稱搜索文件時,請使用find命令以下語法:
假設你要搜索的文件名為filename
- find / -name filename
find命令的第一部分顯然是單詞find。
第二部分是從哪里開始搜索。即指定目錄,它會自動搜索指定目錄里的子目錄
第三部分是一個表達式,它決定要查找什么。
最后一部分是要找的文件名。
3. find命令搜索位置的快捷方式
find之后的第一個參數是要搜索的位置。雖然可以指定特定的目錄,但是大多數人使用元字符作為替代。使用這個命令的三個元字符包括:
- 句點:指定當前文件夾和所有嵌套文件夾
- 左斜杠/:指定整個文件系統
- 波浪符號~:指定活動用戶的主目錄
- 提示:搜索整個文件系統可能會產生許多訪問拒絕錯誤。一般的用戶賬號都會遇到權限的問題,這時,應該使用提升的特權運行該命令(例如,使用sudo)。
表達式
最常用的表達式是-name。name表達式允許搜索文件或文件夾的名稱。
然而,你也可以用其他的表達方式:
- amin n: 該文件最后一次訪問是在n分鐘前
- anewer: 最后一次訪問該文件的時間比修改該文件的時間晚
- atime n: 該文件最后一次被訪問是在n天前
- cmin n: 文件最后一次更改是在n分鐘前
- cnewer: 文件最后一次更改的時間比文件修改的時間更近
- ctime n: 文件最后一次更改是在n天前
- empty: 文件為空
- executable: 該文件是可執行的
- false: 總是錯誤的
- fstype type: 該文件位于指定的文件系統上
- gid n: 該文件屬于ID為n的組
- group groupname: 該文件屬于指定的組
- ilname pattern: 搜索符號行,但忽略大小寫
- iname pattern: 搜索文件但忽略大小寫
- inum n: 搜索具有指定節點的文件
- ipath path: 搜索路徑但忽略大小寫
- iregex expression: 搜索表達式但忽略大小寫
- links n: 搜索具有指定鏈接數量的文件
- lname name: 搜索符號鏈接
- mmin n: 文件的數據最后一次修改是在n分鐘之前
- mtime n: 文件的數據上次修改是在n天前
- name name: 搜索具有指定名稱的文件
- newer name: 搜索最近編輯的文件,而不是給定的文件
- nogroup: 搜索沒有組id的文件
- nouser: 搜索沒有附加用戶的文件
- path path: 查找路徑
- readable: 查找可讀的文件
- regex pattern: 搜索匹配正則表達式的文件
- type type: 搜索特定類型
- uid uid: 文件數字用戶id與uid相同
- user name: 文件由指定的用戶擁有
- writable: 搜索可寫入的文件
4. find命令使用案例
如何查找訪問文件超過一定天數的前幾天
要查找100天前訪問過的主文件夾中的所有文件,請:
- find ~ -atime 100
如何找到空的文件和文件夾
要查找系統中的所有空文件和文件夾:
- find / -empty
如何找到所有的可執行文件
要在你的電腦上找到所有可執行文件:
- find / -exec
如何找到所有可讀的文件
要找到所有可讀的文件:
- find / -read
模式:
在搜索文件時,可以使用模式。例如,搜索擴展名為mp3的所有文件:
- find / -name *.mp3
如何將Find命令的輸出發送到文件
find命令的主要問題是,它有時會返回太多的結果,無法一次性查看。通過管道將輸出輸出到tail命令,或者您可以將這些行輸出到一個文件中,如下所示:
- find / -name *.mp3 -fprint nameoffiletoprintto
如何查找并對文件執行命令
同時搜索和編輯一個文件:
- find / -name filename -exec nano '{}' \;
上面的命令搜索一個名為filename的文件,然后為它找到的文件運行nano編輯器。
5. 結論
通過本文,你應該對find命令怎么用有所了解了吧?這是Linux運維中最常用的命令了,一定要學習使用。