歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> find的基本使用命令

find的基本使用命令

日期:2017/2/28 14:51:35   编辑:Linux教程

一、了解find的基本含義及格式

find在我們所學英語中作動詞時,有“發現、查找、找到等”含義,如今,在linux中“find”是文件查找命令,有實時、精確、支持眾多查找標准的特點。

在查找文件時,因為find是遍歷指定目錄中的所有文件依次查找完成,查找速度相當慢,主要取決你查找的文件大小。

格式:find 查找路徑 查找標准 查找到以後的處理動作

查找路徑可以省略,默認為當前目錄,如果是在其它目錄下可以在find後面直接寫你所在的目錄

查找標准:默認為指定路徑下的所有文件

查找到以後的處理動作:默認為顯示到屏幕上

二、匹配查找標准

1、根據文件名查找:

-name ‘FILENAME’:對文件名作精確匹配

也支持文件名通配:

*:表示匹配任意長度的任意字符

?:表示匹配任意單個字符

[ ]:表示匹配范圍內的任意單個字符

[[:space:]]:所有空格字符

[[:punct:]]:標點符號

[[:lower:]]:小寫字母

[[:upper:]]:大寫字母

[[:digit:]]:數字

[[:alnum:]]:數字和大小寫字母

[^]:托字符;匹配指定范圍之外的任意單個字符

-iname 'FILENAME':文件名匹配時不區分大小寫

-regex PATTERN:基於正則表達式進行文件名匹配,如果後面沒有跟類型,默認為基本正則表達式

-user USERNAME:根據屬主查找,如果把某個用戶的屬主刪除,以這個屬主命名的文件的屬主就會變成用戶之前屬主的ID號

例如:#userdel -r Hadoop

#ls –l /tmp 再查看以hadoop為屬主的用戶就沒有了

-group GROUPNAME:根據屬組查找與-user USERNAME含義一樣

-uid UID:根據UID查找

例如:find /tmp –uid 2003 (表示查找/tmp下用戶的uid為2003的文件)

-gid GID:根據GID查找

例如:find /tmp –gid 2003 (表示查找/tmp下用戶的gid為2003的文件)

-nouser:查找沒有屬主的文件

例如:find /tmp –nouser (表示查找/tmp下沒有屬主的用戶)

-nogroup:查找沒有屬組的文件

例如:find /tmp –nogroup (表示查找/tmp下沒有屬組的用戶)

2、根據文件類型查找:

-type 文件類型

文件類型:

f:普通文件

d: 目錄文件

b:塊設備文件中可供存儲的接口設備(block)

c: 字符設備文件,如:鍵盤、鼠標 (character)

l:符號鏈接文件(symbolic link file)

p: 命令管道文件(pipe)

s:套接字文件(socket)

3、根據文件的大小查找:

-size [+|-] 如果不帶單位默認為字節,想要顯示查找到的文件大小可以使用ls

#k:可以自己設定查找文件大小為多少k,可以與[+|-]一起使用

+#k:表示文件大小在設定多少k以上的文件

例如:find /var –size +10k (表示/var目錄上文件大小在10k以上)

-#k:表示文件大小在設定多少k以下的文件

例如:find /var –size -10k (表示/var目錄上文件大小在10k以下)

#M:可以自己設定查找文件大小為多少M,可以與[+|-]一起使用

+#M:表示文件大小在設定多少M以上的文件

例如:find /var –size +10M (表示/var目錄上文件大小在10M以上)

-#M:表示文件大小在設定多少M以下的文件

例如:find /var –size -10M (表示/var目錄上文件大小在10M以下)

#G:可以自己設定查找文件大小為多少G,可以與[+|-]一起使用

+#G:表示文件大小在設定多少G以上的文件

例如:find /var –size +10G (表示/var目錄上文件大小在10G以上)

-#G:表示文件大小在設定多少G以下的文件

例如:find /var –size -10G (表示/var目錄上文件大小在10G以下)

4、查找可以與組合條件一起使用:

-a:與關系,如果沒有說明組合條件默認為與關系

例如:find /tmp -type d –a –type s (表示查找文件類型既屬於目錄又是套接字文件)

-o:或關系

例如:find /tmp -type d –o –type s (表示查找文件類型屬於目錄或是套接字文件)

-not:非關系

例如:find /tmp -not -type d (表示查找文件類型不是目錄)

5、根據修改時間戳查找:

-mtime n:(單位為天),查找系統中n天被修改的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –mtime +5 (表示查找/tmp中至少5天被修改過的文件)

find /tmp –mtime -5 (表示查找/tmp中5天內被修改過的文件)

-ctime n:(單位為天),查找系統中n天被改變的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –ctime +5 (表示查找/tmp中至少5天被改變過的文件)

find /tmp –ctime -5 (表示查找/tmp中5天內被改變過的文件)

-atime n:(單位為天),查找系統中n天被訪問的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –atime +5 (表示查找/tmp中至少5天被訪問過的文件)

find /tmp –atime -5 (表示查找/tmp中5天內被訪問過的文件)

-mmin n:(單位為分鐘),查找系統中n分鐘被修改過的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –mmin +5 (表示查找/tmp中至少5分鐘被修改過的文件)

find /tmp –mmin -5 (表示查找/tmp中5分鐘內被修改過的文件)

-cmin n:(單位為分鐘),查找系統中n分鐘被改變過的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –cmin +5 (表示查找/tmp中至少5分鐘被改變過的文件)

find /tmp –cmin -5 (表示查找/tmp中5分鐘內被改變過的文件)

-amin n:(單位為分鐘),查找系統中n分鐘被訪問過的文件,可以與[+|-]#(數字)一起使用

例如:find /tmp –amin +5 (表示查找/tmp中至少5分鐘被訪問過的文件)

find /tmp –amin -5 (表示查找/tmp中5分鐘內被訪問過的文件)

6、通過文件權限查找:

-perm MODE 精確匹配

/MODE 文件權限符合任一位即可 (任意一位匹配即滿足條件)

例如:find ./ -perm /022 表示在家目錄下組有寫權限或者其它用戶有寫權限才能符合條件

-MODE 文件權限能完全包括此MODE才符合條件,有包含關系 (對應的位必須完全匹配)

例如:find ./ -perm -001 表示在家目錄下只有其它用戶有執行權限

思考:find ./ -perm -644 如果是權限為755、750的文件能匹配到嗎?

分析: 644:rw-r--r--

755:rwxr-xr-x

750:rwxr-x---

只要權限為644的位,權限755都滿足而權限為750不包含其它用戶的位,所以權限為755的文件能匹配到而權限為750的文件不能匹配

在-perm前加-not,就代表後面的-001表示相反的意思(任意一位匹配即滿足條件)

Copyright © Linux教程網 All Rights Reserved