文件查找命令find詳解

文件的查找命令 find 用法

功能:實時查找工具,通過遍歷指定路徑完成文件查找

工作特點:

?  查找速度略慢
?  精確查找
?  實時查找
?  可能只搜索用戶具備讀取和執行權限的目錄

語法:

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

查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕

1.find 查找條件

1.1根據文件名和inode查找:

  • -name "文件名稱":支持使用glob

  • *, ?, [], [^]

  • -iname "文件名稱":不區分字母大小寫

  • -inum n  按inode號查找

  • -samefile name  相同inode號的文件

  • -links n  鏈接數為n的文件

  • -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

        find -name snow.png
      ? 搜索名為snow.png的文件
        find -iname snow.png
      ? 不分大小寫地搜索名為snow.png、Snow.png、SNOW.PNG等等的文件
       find / -name “*.txt”  搜索后綴為.txt的文件
       find /var –name “*log*”

1.2根據屬主、屬組查找:

  • -user USERNAME:查找屬主為指定用戶(UID)的文件

  • -group GRPNAME: 查找屬組為指定組(GID)的文件

  • -uid UserID:查找屬主為指定的UID號的文件

  • -gid GroupID:查找屬組為指定的GID號的文件

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

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

       find -user gentoo  -group gentoo
       搜索被用戶gentoo 以及組群gentoo所擁有的文件

1.3根據文件類型查找:

-type TYPE:

?  f: 普通文件
?  d: 目錄文件
?  l: 符號鏈接文件
?  s:套接字文件
?  b: 塊設備文件
?  c: 字符設備文件
?  p: 管道文件

組合條件:

與:-a
或:-o
非:-not, !

找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
    find /tmp \( -not -user root -a -not -name 'f*' \) -ls
    find /tmp -not \( -user root -o -name 'f*' \)  –ls

1.4根據文件大小來查找:

-size [+|-] #計算單位    

常用單位:b,c,w,k, M, G

  • #k 表示(#-1k,#k]

  • -#k 表示[0,#-1k]

  • +#k 表示(#k,+∞)

1.5根據時間戳:

以“天”為單位;

  • -atime [+|-]#,

    • #: [#,#+1)

    • +#: [#+1,∞]

    • -#: [0,#)

  • -atime

  • -ctime

  • —mtime

以“分鐘”為單位:

  • -amin

  • -cmin

  • -mmin

      訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。 
      修改時間(-mtime/天,-mmin/分鐘):文件最后一次修改時間。 
      變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最后一次修改時間。

1.6根據權限查找:

-perm [/|-]MODE
MODE: 精確權限匹配

  • /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰

  • -MODE:每一類對象都必須同時擁有指定權限,與關系

    ?0 表示不關注

? find -perm 755 會匹配權限模式恰好是755的文件

? 只要當任意人有寫權限時,find -perm +222就會匹配

? 只有當每個人都有寫權限時,find -perm -222才會匹配

? 只有當其它人(other)有寫權限時,find -perm -002才
會匹配

2.find 處理動作

  • -print:默認的處理動作,表示顯示至屏幕;

  • -ls:類似于對查找到的文件執行“ls -l”命令

  • -delete:刪除查找到的文件;

  • -fls file:查找到的所有文件的長格式信息保存至指定文件中

  • -ok COMMAND {} \: 對查找到的每個文件執行由COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認()

  • -exec COMMAND {} \:對查找到的每個文件執行由COMMAND指定的命令,沒有確認

注意:

find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
find | xargs COMMAND

操作練習

1、查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@localhost ~]# find /var -user root -group mail
/var/spool/mail
/var/spool/mail/root

2、查找/var目錄下不屬于root、lp、gdm的所有文件

 #find /var \( -not -user root -a -not -user lp -a -not -user gdm \)  -ls

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

# find /var \( -mtime -7 -a -not -user root -a -not -user postfix \) -ls

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

#find / \( -nouser -nogroup -atime -7 \) -ls

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@localhost ~]# find /etc -size +1M -type f

6、查找/etc目錄下所有用戶都沒有寫權限的文件

# find /etc/ -not -perm /222 -ls

7、查找/etc目錄下至少有一類用戶沒有執行權限的文件

# find /etc/ -not -perm -111 -ls

8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

# find /etc/init.d -perm -113

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

(1)
N24_yeziN24_yezi
上一篇 2016-11-07 10:57
下一篇 2016-11-07 12:21

相關推薦

  • 交互式與非交互式的區別

    交互式與非交互式shell /登錄shell于非登錄shell 外網連不上,教室裝修太吵,相關資料找不到,云云不知所云,托托癥又犯了 登錄shell_非登錄shell // .bash_profile .bashrc profile 文件的作用的執行順序 http://blog.csdn.net/robertaqi/archive/2010/04/04/54…

    Linux干貨 2017-06-11
  • shell腳本編程之數組

    bash僅支持一維數組,類型聲明: declare -i    : 表示數值 declare -a  :表示普通數組(默認,可不用聲明類型) declare -A :表示關聯數組(必須聲明類型,bash需4.0以上版本才支持,可通過bash –version查看版本) 一、普通數組(用數字為下標) 1.1數組賦值(修…

    Linux干貨 2015-08-24
  • N27_第一周作業

    一、描述計算機的組成及其功能 計算機由CPU、內存、輸入設備和輸出設備組成。 CPU:運算器、控制器、寄存器、緩存 *運算器:進行數字運算和邏輯運算。 *控制器: A、從內存中取出一條指令,并指出下一條指令在內存中的位置; B、對指令進行譯碼或測試,并產生相應的操作控制信號; C、控制并控制CPU、內存和輸入/輸出設備之間數據流動的方向。 *寄存器:暫存指令…

    Linux干貨 2017-09-04
  • 馬哥教育網絡班20期+第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@llww3317 ~]# cp -r /etc/skel /home [root@llww3317 ~]# mv /home/ske…

    Linux干貨 2016-07-05
  • Linux的終端類型

         序  終端的概念是由Ken Thompson提出的,是人機交互的接口。它是一種字符型設備,有多種類型,它大體上分為設備終端,物理終端,虛擬終端,圖形終端,串行終端,偽終端。 一、   設備終端  設備終端就是顯而易見的外在設備,比如鍵盤、鼠標和顯示器等。 二、&nbsp…

    Linux干貨 2016-10-19
  • Linux命令學習

    閱讀目錄 Linux cat命令 file命令 dd命令 hexdump命令 cat命令   cat三大功能:      1.一次顯示整個文件:cat filename      2.從鍵盤創建一個文件:cat > filename 注意只能創建新文件,…

    Linux干貨 2017-07-16
欧美性久久久久