find命令的介紹和用法

find:文件查找

    作用:實時查找工具,通過遍歷指定路徑完成問件查找,遞歸地在層次目錄中處理文件

find的特點:

    1.精確查找,實時查找

    2.可能只搜索用戶具備讀取和執行權限的目錄

    3.查找速度略慢

find(什麼也不要跟就會把當前目錄的所有列表全部顯示出來,find默認是遞歸搜索的)

    語法:

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

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

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

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

選項:

搜索目錄層級

    -maxdepth level :最大搜索目錄深度

    -mindepth level :最小搜索目錄深度

    例:  find 目錄 -maxdepth 2 -mindepth 2:只搜索2級目錄

    -depth:find 目錄 -depth:先處理文件後處理目錄

根據文件名和inode查找:

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

            *, ?, [], [^]

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

    -inum n 按inode號查找

例:

[root@localhost data]$find /data -inum 67

/data/123.txt

    -samefile name 相同inode號的文件

例:

find /data -samefile /data/fi.sh:查看節點編號相同的文件前後目錄可以不一致

搜索的目錄 標準文件所在的目錄

    -links n  鏈接數爲n的文件

    -regex “PATTERN”:以PATTERN匹配整個文件路徑,而非文件名稱(匹配的是完整路徑)

根據文件屬主和屬組查找;

    -user username:查找屬主爲指定用戶的文件

    -group groupname:查找屬組爲指定組的文件

    -uid useruid:查找屬主爲指定UID的文件

    -gid groupgid:查找屬組爲指定GID的文件

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

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

根據文件類型查找:

-type:

      b      特殊塊文件(緩衝的)

      c      特殊字符文件(不緩衝)

      d      目錄

      p      命名管道 (FIFO)

      f      普通文件

      l      符號鏈接

      s      套接字

空文件或目錄

-empty

-type d -empty

根據文件大小:

-size:常用單位(K M G c(Byte))

+#M:表示大於#M的文件,+5M

-#M:表示小於於#M的文件,-5M

根據時間查找:

以天爲單位:

-atime:訪問時間

+,-:+10,超過十天訪問過的文件,-10十天內訪問過的文件

-mtime:修改時間,文件內容最後一次修改的時間,文件內容修改

-ctime:改變時間,文件最後一個改變的時間,屬性及文件名改變

以分鐘爲單位:

-amin:訪問時間

-mmin:修改時間

-cmin:改變時間

根據文件權限查找:

-perm:

mode:精確查找

/mode:任何一類(u,g,o)對象的權限只要匹配一位就滿足條件。或的關係。早期用+號表示

-mode:每一類對象都必須擁有指定權限才滿足條件

0:表示不關注

例:find -perm 755 file,精確匹配權限755的文件

find -perm /222 file,屬主,屬組,其他人,其中一個有寫權限就匹配

find -perm -222 file,屬主,屬組,其他人,必須每個都有寫權限就匹配

find -perm -002 file ,只有其他人有寫權限時才匹配

動作:

-print:默認的處理動作,將匹配到的顯示到屏幕

-ls:類似於ls -l查看文件

-delete:匹配到的內容刪除(危險,不要用)

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

-ok command {} \; :對查找到的文件,執行由command位指定的命令,缺點是對每個匹配的文件執行命令前都需要確認

例:find /data -name "*.sh" -ok mv {} /tmp \;

{}:引用前面find匹配到的文件,引用查找到的文件名稱自身,例如匹配的是ping.sh,name{}內就位{ping.sh}

\;:語法格式,必須以\;結尾

-exec command {} \; :對查找到的文件,執行由command位指定的命令,和ok不同的是不需要一個一個確認

例:find /data -name "*.sh" -ok mv {}.bak /tmp \;

{}.bak:移動到/tmp目錄下改名爲以.bak爲後綴的文件

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

[root@centos7 ~]#find /var ! -user root ! -user lp ! -user gdm -type f

/var/lib/colord/mapping.db

/var/lib/colord/storage.db

/var/lib/nfs/state

/var/lib/unbound/root.key

/var/lib/setroubleshoot/setroubleshoot_database.xml

/var/lib/setroubleshoot/email_alert_recipients

/var/lib/postfix/master.lock

/var/spool/mail/rpc

/var/spool/mail/cheng

/var/spool/mail/ning

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