find 檔案的查詢

2021-07-22 19:53:25 字數 4045 閱讀 3473

這個命令在linux中是乙個比較強大的功能,它會在你指定的資料夾下可以很精確的查詢某乙個檔案。但是它同時有乙個缺點,就是會效率會比較低,所以我推薦當你去查詢某個檔案或者想知道某個命令的路徑時,先用whereislocate這兩個命令先去試試,如果真查不到,再使用此命令。

命令說明

[root@localhost ~]# find [path] [option] [action]

引數:與時間有關的引數:-atime、-ctime 和 -mtime。我們取其中 mtime 來舉例

-mtime n : n 為數字,意義在 n 天之前的 「當天」 被更改的檔案。

-mtime +n : 列出 n 天之前(不包含 n 天本身)被修改過的檔案。

-mtime -n : 列出 n 天之內(包含 n 天本身)被修改過的檔案。

-newer file : file 為乙個存在的檔案,列出比 file 還要新的檔案。

命令舉例
例子一:將過去24小時內有改動的檔案都列出來。

[root@localhost ~]# find / -mtime 0

# 0代表當前的時間,所以查詢的是現在開始到24小時前被修改過內容的檔案都會被列出來。

例子二:尋找 /etc 下面的檔案,如果比 /etc/passwd 新就列出來

我們來具體了解下數字的意義:-ex> find /var -mtime +4:代表查詢出大於等於5天前的檔案。

-ex> find /var -mtime -4:代表查詢出小於或者等於4天內的檔案。

-ex> find /var -mtime 4:代表查詢出4~5那一天的檔案。

命令說明

引數:

-uid n : n 為數字,這個數字是使用者的賬號 id,即 uid,這個 uid 是記錄在 /etc/passwd 裡面與賬號名稱對應的數字。

-gid n : n 為數字,這個數字是使用者組名的 id,即 gid,這個 gid 是記錄在 /etc/group 中。

-user name : name 為使用者賬號名稱。如 wenjie。

-group name : name 為使用者組名稱。如users。

-nouser : 尋找檔案的所有者不存在 /etc/passwd 的檔案。

-nogroup : 需找檔案的使用者組不存在 /etc/group 的檔案。

看到上面的命令說明,你或許會有個疑問。難道還會有所有者、使用者組不存在的檔案?答案是,有可能的。比如有乙個使用者在系統下建立了乙個檔案或目錄,然後由於某種原因,這個使用者或者使用者組被刪掉了,系統中就會出現乙個無主的檔案

命令舉例

例子三:查詢 /home 下面屬於 wenjie 這個使用者的檔案

[root@localhost ~]# find /home -user wenjie

# 這個命令還蠻常用的,當我們需要知道某個資料夾下查詢出某個使用者的所有檔案。

例子四:查詢系統中不屬於任何人的檔案

[root@localhost ~]# find / -nouser

命令說明
引數:

-name filename : 查詢檔案名為 filename 的檔案

-size [+-]size

: 查詢比 size 還要大(+)或小(-)的檔案。

size 的單位有 c:代表 byte、k:代表 1024bytes、m:代表 mb、g:代表 gb。所以我們要找比50 kb還要大的檔案

就是:「-size +50k」

-type type

: 查詢檔案型別為 type 的。型別主要有:

* 一般正規檔案(f)

* 裝置檔案(b,c)

* 目錄(d)

* 連線檔案(l)

* socket(s)

* fifo(p)

-perm mode : 查詢檔案許可權「剛好等於」 mode 的檔案,舉例來說:

-rwsr-xr-x 的屬性為 4755

-perm -mode : 查詢檔案許可權「必須要全部包含」 mode 的檔案,舉例來說:

我們要查詢 -rwxr-xr-- 的數字為 0754

如果還有乙個檔案的許可權為 -rwxrwxr-x 的數字為 0775 同樣也會列出來

因為 -rwxrwxr-x 的許可權已經包含 -rwxr-xr-- 的許可權了。

-perm +mode : 查詢檔案許可權「包含任一」 mode 的檔案,舉例來說:

我們要查詢許可權 -rwxr-xr-x 的數字為 0755時,

但檔案許可權 -rw------- 的數字為 0600 檔案也會列出來,

因為它有 -rw... 的許可權。

命令舉例
例子五:查出檔名為 passwd 的這個檔案

[root@localhost wenjie]# find / -name passwd

# 利用 -name 這個引數來查詢

例子六:找出 /var 目錄下檔案型別為 socket 的檔名有哪些

[root@localhost wenjie]# find /var -type s

# 這個命令可以查詢出比較怪異的檔案

# 比如: socket 與 fifo 檔案,可以用 find /var -type s 或 -type p 來找!

例子七:查詢檔案當中含有 sgid 或 suid 或 sbit 的屬性

[root@localhost wenjie]# find / -perm +7000

# 所謂的 7000 就是 ---s--s--t,所以只要含有 s 或 t 的就都列出來

# 假如想找含有 ---s--s--t 的所有三個許可權,那麼得使用 -7000

例子八:查詢出系統大1mb的檔案

[root@localhost wenjie]# find / -size +1000k

命令說明
引數:

-exec command: command 為其他命令,-exec 後面可再接其他的命令來處理查詢的結果。

-print : 將結果列印到螢幕上,這個操作是預設操作

命令舉例
例子九:將上列找到的檔案使用 ls -l 列出來

[root@localhost wenjie]# find / -perm 0400 -exec

ls -l {} \;

# 那個 -exec 後面 ls -l 就是額外的命令,命令不支援別名。

# 所以僅能使用 ls -l,不可以使用 ll。

上面這個範例各個引數的意義:

-{}代表是「由 find 找到的內容」,就是經過find查詢的內容會被放置到{}位置中。

--exec一直到\;是關鍵字,代表find額外命令的開始(-exec)到結束(\;),在這中間的就是find命令內的額外命令。在上面那個例子中就是「ls -l {}」

-因為「 ; 」在 bash 環境下是有特殊意義的,因此利用反斜槓來轉義。

find檔案查詢

我們很多時候會忘記某個檔案在什麼位置,此時就需要進行檔案查詢。linux檔案查詢主要是使用find命令來進行查詢,find命令可以通過不同的維度來定位到某個想要查詢的檔案。find 查詢的範圍 選項 表示式 動作 使用示例如下 root oldboy find name ls 以根目錄下的所有檔案作...

檔案查詢 find

find 查詢目錄 引數 檔案名字 find usr name time.c 使用萬用字元 find usr name ime.c find usr name ime.c 代表任意個字元 代表單個字元 touch命令用於修改檔案或者目錄的時間屬性,包括訪問時間和更改時間。若檔案不存在,系統會建立乙個...

檔案的查詢工具find

有的時候我們需要快速查詢一些檔案,但是我們卻不知道這個檔案在哪的時候,就急切的需要乙個工具來幫助我們,這時候find就誕生了。find能實現精確查詢,雖然速度略慢,但是並不妨礙我們使用,下面就介紹一下find的使用方法。基於時間戳的查詢 假如需要檢視七天前的檔案,但是總不能一一的去看時間查詢,這點和...