find命令詳解

find命令詳解

        我們在日常使用電腦的時候,經常需要查找某個文件,這時我們就可以是用find命令來進行查找,find命令可以基於文件各種屬性,查找一個目錄來查找文件,find命令是一個功能非常強大的命令,但是當服務器負載比較重的時候,還是等待系統空閒時候用比較好,find命令使用時對CPU,內存資源消耗是比較大的,爲了服務的穩定性,還是建議等待系統空閒下來再使用find命令。(PS:如果能用locate解決的問題最好就不要使用find了,畢竟locate更加節省資源。)

find命令的語法

      find[OPTION]... [查找路徑] [查找條件] [處理動作]

           查找路徑:指定具體目標路徑;默認爲當前目錄;

           查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認爲找出指定路徑下的所有文件;

           處理動作:對符合條件的文件做什麼操作;默認輸出至屏幕;

根據文件名或者正則表達是查找;

-neme "pattern"

       例如:[root@localhost ~]# find /etc/sysconfig/ -name network

      /etc/sysconfig/netwok

這個是區分大小寫的,用find [查找路徑] -ineme "pattern"查找是將不會區分大小寫。

        例如:[root@localhost ~]# find /etc/sysconfig/ -iname network          

      /etc/sysconfig/network

      /etc/sysconfig/Network

在你的電腦上可能沒有Network這個文件,因爲這個文件是我自己建立的,不要誤以爲是-iname條件沒有生效,另外這兩個命令還支持支持glob風格的通配符。

       例如:在/etc/sysconfig目錄下查找以net開頭的文件

      [root@localhost~]# find /etc/sysconfig/ -name net*

      /etc/sysconfig/netconsole

      /etc/sysconfig/network-scripts

      /etc/sysconfig/network-scripts/network-functions

      /etc/sysconfig/network-scripts/network-functions-ipv6

      /etc/sysconfig/network

根據文件從屬關係查找:

-user USERNAME:查找屬主指定用戶的所有文件;

-group GRPNAME:查找屬組指定組的所有文件;

       例如: [root@localhost ~]# find /home/ -user root -group hadoop -ls

33859580   0 drwxr-xr-x   2 root     hadoop            6 12 17 20:20 /home/root

-uid UID:查找屬主指定的UID的所有文件;

-gid GID:查找屬組指定的GID的所有文件;

wKiom1ZyunvDWCVrAAAHL_qKZR4302.png

       例如find /home/ -uid 0 -gid 1001 -ls

33859580   0 drwxr-xr-x   2 root     hadoop            6 12 17 20:20 /home/root

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

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

使用方法如下:

wKiom1ZyutSy-usuAAAF3OV0bu4635.png

抱歉,我的主機上沒有這樣沒有屬主和屬組的文件

根據文件的類型查找:

-type TYPE [f][d][l][b][c][p][s]

      例如:[root@localhost ~]# find /home  -type d

    /home

    /home/hadoop

    /home/hadoop/.mozilla

    /home/hadoop/.mozilla/extensions

    /home/hadoop/.mozilla/plugins

    /home/root

組合測試:

與:-a, 默認組合邏輯;

或:-o

非:-not, !

例如:[root@localhost~]# find /home  -type d -user root就相當於

      [root@localhost~]# find /home  -type d -a -user root

           /home

           /home/root

      [root@localhost~]# find /home  -type d -o -user root

    /home

    /home/hadoop

    /home/hadoop/.mozilla

    /home/hadoop/.mozilla/extensions

    /home/hadoop/.mozilla/plugins

    /home/root

      [root@localhost~]# find /home  -type d -o -user root

    /home

    /home/hadoop

    /home/hadoop/.mozilla

    /home/hadoop/.mozilla/extensions

    /home/hadoop/.mozilla/plugins

    /home/root

根據文件的大小查找:

-size [+|-]文件大小n    常用單位:k, M, G

      +nM則大於nM

      -nM則小於nM

      nM則等於nM

    例如:

wKioL1ZyvMLjLEiTAAA8gTfFVvQ234.png

根據時間戳查找:以“天”爲單位;

      -atime  [+|-]#

      -mtime  [+|-]#

      -ctime  [+|-]#

這裏的+-與上面size+-類似只不過+變成了n天之前,-變成了n天以內。atime是指定時間之時被存取的文件或目錄,mtime是指定時間之時被改動的文件或目錄,ctime是指定時間之時被更改的文件或目錄。

    例如:[root@localhostroot]# find /home/root -atime +1

    /home/root/Fedora-i386-20-20131211.1-sda.qcow2  

以“分鐘”爲單位:

      -amin  [+|-]#

      -mmin  [+|-]#

      -cmin  [+|-]#

這個與上面以“天”爲單位的操作類似就不多做說明了。

根據權限查找:

-perm [/|-]mode

      mode:精確權限匹配;

      /mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;

           9位權限之間存在“或”關係;

      -mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足;

           9位權限之間存在“與”關係;

    例如find /home -typef -perm 777(查找/home目錄下權限爲rwxrwxrwx的文件)

    find /home -type f -perm /222(查找/home目錄下文件ugo權限中只要一個有w權限的文件)

    find /home -type f -perm -222(查找/home目錄下文件ugo權限中每個都有W權限的文件)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章