Linux文件查找工具之find “大寶劍”

一、文件查找工具常用軟件

locate:

    locate命令其實是find -name的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫/var/lib/locatedb,這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。   

find:

    find命令用來在指定目錄下查找文件,通過遍歷指定的目標目錄,實時查找符合指定屬性的文件??梢越Y合正則表達式(REGular EXPressio)來匹配模式。

二、軟件常用參數及使用方式

locate:

    使用格式:locate [OPTION]… PATTERN…

        常用參數:

            -i:忽略大小寫

 wKiom1bgPWGTjPsyAABDnEiqYOI752.png

        實例:

            過濾/etc/下以sh開頭的文件

# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells

find:
    find [OPTIONS] [查找路徑] [查找條件] [處理動作]

                        查找路徑:默認為當前路徑;

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

處理動作:默認為打印至屏幕;

1、查找路徑

    默認為當前路徑,可以指定系統內的任意路徑,但不建議使用/

2、查找條件

(1)基本查找條件

a、用戶、用戶組及文件名查找

-name "文件名":文件名支持使用globbing

    glob:文件名通配;快速引用多個文件;文件名整體匹配度檢測;

元字符:基于元字符可編寫匹配模式(pattern);

    *:匹配任意長度的任意字符;

    ?:匹配任意單個字符;

    [ ]:匹配指定集合內的任意單個字符;

[a-z], [A-Z]:不區分字符大小寫;

[0-9]

[a-z0-9]

    [[:upper:]]:所有大寫字母;

    [[:lower:]]:所有小寫字母;

    [[:digit:]]:所有的數字;

    [[:alpha:]]:所有字母;

    [[:alnum:]]:所有字母和數字;

    [[:space:]]:空白字符;

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

            [^ ]:匹配指定集合外的任意單個字符;


實例:

# find /etc -name "passwd*"

-iname "文件名" 不區分大小寫


實例:

# find /tmp -iname "*yum*"
/tmp/yum.log
/tmp/YUM.LOG
# find /tmp -name "*yum*"
/tmp/yum.log

-user USERNAME:根據屬主查找

-group USERNAME:根據屬組查找


實例:

# find /var -user root -o -group mail

-uid UID:根據指定UID查找

-gid GID:根據指定GID查找


實例:

# find /tmp -uid 3323 -ls
2346806    0 -rw-rw-r--   1 mageedu  mageedu         0 Mar 10 09:36 /tmp/mageedu
2346812    0 -rw-rw-r--   1 mageedu  mageedu         0 Mar 10 09:36 /tmp/testfile

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

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

    -nouser與-nogroup參數主要用在當公司員工離職后,雖然賬戶刪除,但是他所有權限的文件還存在,并且以UID的形式來標識屬主與屬組,既當有uid有這個用戶相同時就會可以查看此文件,所以需要刪除此類文件。


實例:

# find /tmp -nouser -nogroup -ls
2346806    0 -rw-rw-r--   1 3323     3323            0 Mar 10 09:36 /tmp/mageedu
2346812    0 -rw-rw-r--   1 3323     3323            0 Mar 10 09:36 /tmp/testfile

b、文件類型查找

    -type TYPE: 根據文件類型查找

f: 普通文件

d: 目錄文件

l: 符號鏈接文件

b: 塊設備

c: 字符設備文件

p: 命令名管道文件

s: 套接字文

實例:

# find /tmp -type d -ls

c、文件大小

    -size [+|-]#UNIT:

常用單位有:k, M, G

#UNIT: #-1 < x <= #

            2k指1k-2k

-#UNIT:x <= #-1

    -2k:指0k-1k

        +#UNIT: x > #

    +2k:指2k到正無窮


實例:

# find /etc/ -type f -size +1

d、時間戳查找

    以“天”為單位

     -atime [+|-]#

-mtime [+|-]#

-ctime [+|-]#

            #: 例如:今天為3月10日,3就是3月7日到3月8日(注意天是24小時制)

            -#: 例如:今天為3月10日,-3就是三天內指,3月7日的現在時間到現在的時間。

            +#: 例如:今天為3月10日,+3就是三天前之前指,3月7日前

    以“分鐘”為單位

-amin [+|-]#

        -mmin

-cmin

實例:

# find /etc -not -user root -not -user hadoop -mtime -7
# find / -nouser -nogroup -atime -3

e、權限查找

    根據權限查找:

-perm [+|-]MODE

    MODE: 與MODE精確匹配

    +MODE:任何一類用戶的權限只要能包含對其指定的任何一位權限即可;

    -MODE:每一類用戶的權限都包含對其指定的所有權限;

#這里是指包含,例如:-444 指在屬主、屬組、其他用戶中只要包含讀權限就可以。

實例:

# find /etc/init.d/ -perm -113  #此處指所有用戶都有執行權限,其他用戶有寫權限的文件或目錄
# find /etc/ -type f -not -perm +222 #此處指所有用戶都沒有寫權限

(2)組合查找條件

    組合查找條件:

與:-a, 查找條件1 -a 查找條件2 -a …

    所有條件必須同時滿足

或:-o, 查找條件1 -o 查找條件2 -o …

    滿足其中一個條件即可

非:-not, !   

    -not 查找條件

實例:

# find / \( -nouser -o -nogroup \) -a -atime -3
# find /etc/ -not \( -user root -o -user hadoop \) -a -mtime -7

3、處理動作

    -print: 默認動作,打印至屏幕;

        -ls: 顯示找到的文件的詳細屬性;

-exec COMMAND {} \;

-ok COMMAND {} \;

            #exec與ok的區別:ok會提供交互式,讓你確認。而exec則不需要;

實例:

# find /tmp -iname "*yum*" -type f -ls
   134    0 -rw-r--r--   1 root     root            0 Mar 10 09:32 /tmp/yum.log
   137    0 -rw-r--r--   1 root     root            0 Mar 10 09:32 /tmp/YUM.LOG

# find /tmp -iname "*yum*" -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 Mar 10 09:32 /tmp/yum.log
-rw-r--r-- 1 root root 0 Mar 10 09:32 /tmp/YUM.LOG

# find /tmp -iname "*yum*" -type f -exec echo {} >>/tmp/test.file \;

# find /tmp -iname "*yum*" -type f -ok echo {} >>/tmp/test.file \;
< echo ... /tmp/yum.log > ? y
< echo ... /tmp/YUM.LOG > ? y

原創文章,作者:Ace,如若轉載,請注明出處:http://www.www58058.com/12667

(0)
AceAce
上一篇 2016-03-12 00:54
下一篇 2016-03-12 23:08

相關推薦

  • 第一周作業

    一:計算機的組成和功能 主要分為五個部分:控制器、運算器、存儲器、輸入、輸出 CPU :包含控制器和運算器、寄存器、緩存 存儲器:內存,RAM(Random Access Memory) 輸入:下指令,提供數據等 輸出:輸出數據加工的結果     微型計算機系統組成:      …

    Linux干貨 2016-12-06
  • linux網絡配置

    主要內容: ip地址以及子網劃分 路由基本概念 網絡配置工具:ifconfig,ip,netstat使用 網卡配置文件及修改 IP地址: 它們可唯一標識 IP 網絡中的每臺設備 v  每臺主機(計算機、網絡設備、外圍設備)必須具有唯 一的地址 v IP地址由兩部分組成:   &n…

    Linux干貨 2016-09-07
  • 批量部署lxc虛擬機

    前言:lxc是一種操作系統層虛擬化(Operating system–level virtualization)技術,為Linux內核容器功能的一個用戶空間接口。它將應用軟件系統打包成一個軟件容器(Container),內含應用軟件本身的代碼,以及所需要的操作系統核心和庫。通過統一的命名空間和共用API來分配不同軟件容器的可用硬件資源,創造出應用程…

    Linux干貨 2016-03-20
  • linux開機啟動流程

    linux開機啟動流程:   一、BIOS 加電自檢 當你按電源開關開機時,電腦會首先去啟動BIOS(基本輸入輸出系統),BIOS一般是集成在主板上的. BIOS 的工作 1.檢測連接硬件,比如顯卡,內存,磁盤等等,檢測的目的是以后把這些設備信息提供給操作系統 2.尋找啟動磁盤,每一種BIOS都會有開機啟動菜…

    Linux干貨 2016-09-19
  • 網卡路由配置信息及偷懶用法

            對于初學Linux的人來說,配置網卡無疑是比較暈的,各種的配置文件,字段、命令等讓人眼花撩亂。所以這一章主要給大多數還在網卡配置路由配置的同學們解惑一、網卡配置基本概念        …

    Linux干貨 2017-05-08
  • GOPS 2016全球運維大會 上海站

    GOPS 2016全球運維大會 ? 上海站已經圓滿落幕,最新GOPS大會推薦:GOPS2017全球運維大會 ? 深圳站 基本信息: GOPS2017全球運維大會 ? 深圳站 時間:2017-04-21 08:00:00 至 2017-04-22 18:00:00結束 地點:深圳    會議規模:5000人 會議詳情:http://www.…

    系統運維 2016-09-07
欧美性久久久久