Find命令的使用

Find命令的基本用法

在Linux系統中find命令是一個強大文件查找類工具,它支持根據文件名,權限,文件大小,訪問以及修改時間查找,使用方法如下:

find [option] [查找起始路徑] [查找條件] [處理動作]

  • 起始路徑:指定查找文件或目錄的路徑,默認為當前目錄
  • 查找條件:可根據文件名,權限,文件大小以及從屬關系查找文件
  • 處理動作:動查找到的文件進行處理,如查看詳細信息,刪除或復制等。默認為顯示

1 查找條件的選項:

(1)根據文件名查找:-name PATTERN 支持global通配符

             -iname   不區分文件名大小寫    支持global通配符  </br>
             -regex   PATTERN          基于正則表達式但是匹配整個路徑名

(2)根據從屬關系查找:-user USERNAME 查找屬主為USERNAME的文件

            -group    GROUPNAME     查找屬組為GROUPNAME的文件
            -uid/gid   UID/GID      根據UID/GID查找文件
            -nouser                 查找所有沒有屬主的文件
            -nogroup                查找所有沒有屬組的文件

(3)根據文件類型查找:-type TYPE (b c d f s p l)

(4)根據文件大小查找:-size[+|-]#UNIT 常用單位:K M G

         #UNIT  精確匹配文件大小
        -#UNIT  小于#的文件
        +#UNIT  大于#的文件

(5)根據時間戳查找: -atime/-mime/-ctime[+|-]# 以天為單位查找訪問時間,修改時間或改變時間

                 #       精確匹配#天  [#,#-1] 
                -#       #天至當前時間的訪問區間[0-#]
                +#       #天之前的所有文件
         -amin/-mmin/-cmin[+|-]# 以分鐘為單位查找

(6)根據文件權限查找: -prem /|- mode 根據文件讀寫執行權限匹配文件

              mode         精確匹配權限
             /mode         只要屬主屬組以及其他用戶任意一位權限匹配均視為匹配到的文件。9位權限之間為或關系
             -mod          必須匹配每一類用戶的每一位權限。9位權限之間為與關系

2 處理動作:

      -print: 輸出至標準輸出,默認的動作 ##
         -ls:類似于對查找到的文件執行“ls -“ 命令
         -delete:刪除查找到的文件
         -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件
         -ok COMMAND {} \; :對查找到的每個文件執行由此處COMMAND表示的命令,需確認
         -exec  COMMAND {} \; :對查找到的每個文件執行由此處COMMAND表示的命令,不確認

3 結合xargs 命令使用

find命令查找到文件送至后面的命令時,是先查找出所有符合條件的路徑然后一次性傳遞給后面的命令,但是有些命令不支持過長的參數,此時執行會失敗因此需要使用管道符號輸入給xargs命令執行。

xargs [options] COMMAND

           -a    從文件中讀取作為stdin
           -p    沒執行一個參數會先詢問用戶
           -t    先打印然后再執行命令
           -i    {}是告訴xargs,后面的命令中,用{}表示占位符,將會被實際的參數替代 
           -n    用于指定每次傳遞幾個參數 
           -d    用于指定切分輸入內容時,具體的分隔符

示例:

1 顯示etc目錄大于1M的文件并使用ls命令顯示出來

[root@mycentos etc.backup]# find /etc -size +1M | xargs ls -lh
-rw-r--r--. 1 root root 6.6M Aug 16 17:04 /etc/1dss
-rw-r--r--. 1 root root 1.4M Mar  6  2015 /etc/brltty/zh-tw.ctb
-rw-r--r--. 1 root root 3.7M Nov 21  2015 /etc/selinux/targeted/policy/policy.29
-rw-r--r--. 1 root root  29M Aug 16 17:06 /etc/sysconfig/atd
-r--r--r--. 1 root root 6.7M Jul 31 07:31 /etc/udev/hwdb.bin

2 找到所有沒有屬主屬組的文件并將屬主和屬組改為root用戶

[root@mycentos etc.backup]# find / -nouser -o -nogroup | xargs -i chown root:root {}

Find命令使用的練習

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

[root@mycentos etc.backup]# find /var -user root -a -group mail -ls
31458804 drwxrwxr-x   2 root mail 4096 Aug 27 15:50 /var/spool/mail
3148559   60 -rw-------   1 root mail59873 Aug 27 15:50 /var/spool/mail/root

2 查找當前系統上沒有屬主或屬組并且3天內曾被訪問過的文件或目錄

[root@mycentos ~]# find / \( -nouser -a -nogroup \) -atime -3
/home/hadoop
/home/hadoop/.mozilla
/home/hadoop/.mozilla/extensions
/home/hadoop/.mozilla/plugins

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

[root@mycentos ~]# find /etc -perm -222 -ls
251659560 lrwxrwxrwx   1 root root   17 Jul 31 07:16 /etc/mtab -> /proc/self/mounts
107365050 lrwxrwxrwx   1 root root   54 Jul 31 07:22 /etc/fonts/conf.d/65-0-lohit-tamil.conf -> /usr/share/fontconfig/conf.avail/65-0-lohit-tamil.conf
87286650 lrwxrwxrwx   1 root root   56 Jul 31 07:17 /etc/fonts/conf.d/59-liberation-mono.conf -> /usr/share/fontconfig/conf.avail/59-liberation-mono.conf
107365080 lrwxrwxrwx   1 root root   54 Jul 31 07:22 /etc/fonts/conf.d/66-ucs-miscfixed.conf -> /usr/share/fontconfig/conf.avail/66-ucs-miscfixed.conf

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

[root@mycentos ~]# find /etc -size +1M -a -type f 
/etc/selinux/targeted/policy/policy.29
/etc/sysconfig/atd
/etc/udev/hwdb.bin
/etc/1dss
/etc/brltty/zh-tw.ctb

5 查找/usr目錄下不屬于root,bin或Hadoop的所有文件或目錄

[root@mycentos ~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls 方法1
258679324 drwx------   2 polkitd  root 4096 Jul 31 07:21 /usr/share/polkit-1/rules.d
17625859   16 -rwsr-sr-x   1 abrt abrt15336 Dec  1  2015 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
[root@mycentos ~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls 方法2
258679324 drwx------   2 polkitd  root 4096 Jul 31 07:21 /usr/share/polkit-1/rules.d
17625859   16 -rwsr-sr-x   1 abrt abrt15336 Dec  1  2015 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

6 查找/etc目錄下一周內內容修改過并且屬主不是root也不是Hadoop的文件或目錄

[root@mycentos etc]# find /etc -mtime -7 -not \( -user root -o  -user hadoop \) -ls
292524890 -rw-r--r--   1 harryharry   0 Aug 27 16:21 /etc/testfile

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

[root@mycentos etc]# find /etc/ -not -perm  -111

8 查找/etc/init.d目錄下所有用戶都有執行權限并且其他用戶又有寫權限

[root@mycentos etc]# find /etc/init.d/ -perm  -113 -ls
21319658 -rwxr-xrwx   1 root root 6630 Sep 16  2015 /etc/init.d/network

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

(0)
N27_CaiShuangN27_CaiShuang
上一篇 2017-08-28 17:54
下一篇 2017-08-28 19:38

相關推薦

  • MAN手冊各章節功能介紹及快捷鍵位詳細說明

    MAN手冊各章節功能介紹及快捷鍵位詳細說明 M21-陸東貴 Man命令的作用:獲取外部命令的使用幫助信息; 使用方法:]#  man  COMMAND        選項:        -M /PATH/TO/SOME…

    Linux干貨 2016-10-18
  • 正則表達式與例題

    正則表達式與例題  一BRE 和ERE 由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能 程序支持:grep ;sed ;  awk ; vim ; less ; nginx ; varnish 元字符分類:字符匹配  匹配次數  位置錨定  分組 二.基…

    Linux干貨 2017-07-29
  • sed用戶小結

    sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法sed命令行格式為:         sed [-nefri] ‘command’ 輸入文本  …

    Linux干貨 2016-08-12
  • N25第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash declare -a usersh nologin=0 login=0 usersh=($(cut -d’:’ -f7 /etc/passwd)) ##數組賦值時需…

    Linux干貨 2017-03-04
  • 文本處理工具及grep命令的理解與使用

    1. 文本處理工具   1.1 文件查看命令cat tac     cat命令:連接文件并在標準輸出上面顯示出來  圖 1-1   cat幫助文檔        cat [option]…[file]…     &n…

    Linux干貨 2016-08-07
  • passwd

    http://www.cnblogs.com/wzhuo/p/6706774.html

    Linux干貨 2017-04-17

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-10-10 13:09

    這篇博客整理的非常好,幾乎涵蓋了find神器的各種場景,還配有案例,給你點個贊,一定能幫到不少人。

欧美性久久久久