文件查找命令find

  在文件系統上常常需要根據文件的各種屬性去查找符合條件的文件。在Linux下也有相當優異的查找命令。今天只要將find和locate。find通常不常用,因為速度慢!通常我們先使用locate來進行模糊查找,如果真找不到了,才以find來查找。為什么呢?因為locate是利用數據庫來查找數據,所以速度非???,而且并沒有實際查詢硬盤比較省時間。

locate/slocate命令

locate屬于非實時查找,以來于事先構建的索引;索引的創建在系統空閑時由系統自動進行(周期性任務);手動更新數據庫進行使用updatedb命令;索引構建過程需要遍歷整個跟文件系統,及其耗費資源。其特點為;查找速度快、非精確查找、模糊查找。

語法

locate [OPTION]… PATTERN…

常用選項

-i, –ignore-case #忽略字符大小寫

-r, –regexp REGEXP #使用正則表達式模式查找

-l, –limit, -n LIMIT #列舉匹配

locate用法簡單,即locate KEYWORD即可,這里就不再詳述


find命令

在指定目錄層級結構下查找路徑

語法

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

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

查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄;

查找條件:指定的查找標準,根據文件名、大小、類型、從屬關系、權限等等標準進行;默認為找出指定路徑下的所有文件;

處理動作:對符合查找條件的文件作出的操作,例如刪除等操作;默認為輸出至標準輸出;


                              

查找條件

    -name filename  #查找名為filename的所有文件

    -iname filename  #忽略字符大小寫查找filename文件

支持glob風格的通配符; *  . ?  [] [^]

-regex pattern :基于正則表達式模式查找條件,匹配是整個路徑,而非 其名。

根據文件從屬關系查找:

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

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

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

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

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

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

根據文件的類型查找:

  -type TYPE:

         f;普通文件

         d;目錄文件

         l;符號鏈接文件

         b;塊設備文件

         c;字符設備文件

         p;管道文件

         s;套接字文件

組合測試;即德摩根定律

    與; -a,默認組合邏輯 同時滿足

    或; -o, 滿足其中之一即可

    非: not !

根據文件的大小查找;

        -size [+|-]# UNIT 不帶加減號做精確查找。

          常用單位; k M G 不帶單位默認為字節。

          #UNIT: (#-1,#)大于等于# 。小于等于#的值

                 # :例如#為3k時  查找范圍為大于等于3k小于等于4k的文件。

          -#UNIT: (0,#-1)小于#,大于0的值

                -# 例如為-500k     查找范圍就是小于500k大于0k的文件

          +#UNIT:[大于#,oo]大于#的無上限文件。

                +#例如為+500     查找范圍就是大于500無上限的文件、

   根據時間戳來查找:

      以"天"為單位:

           -atime:查找按訪問時間查找

           -atime [+|-]#

                #:[#>, <#-1] 大于#天 小于#-1天

                 如#是3 就是 大于3天 小于4天的ac時間

                -#(#>,0)小于#大于0 例如#為3就是小于3大于0天。

                  即為3天之內的訪問時間

                +#(oo,#-1):從無窮大到#-1天。

                例如#為3 即為 大于3天而后無線天。

                  即為3天之前的訪問時間

           -mtime:查找按修改時間查找,以天為單位。查找機制同atime

           -ctime:查找按改變時間查找,以天為單位。查找機制同atime

           以“分鐘”為單位

           -amin 機制同上

           -mmin

           -cmin

           根據權限來查找

             -perm [/|-]mode

                  mode:精確權限匹配;

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

                      9位權限之間存在"或"關系

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

                       9位權限之間存在"與"關系

                     find ./ -not -perm -222:至少有一類用戶沒有寫權限

 處理動作;

      -print:輸出至標準輸出;默認的動作

      -ls;類似于對查找到的文件執行"ls -l"命令,輸出文件的詳細信息;

      -delete:刪除查找到的文件

      -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;

      -ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;    

      -exec COMMAND {} \; : 對查找到的每個文件執行由COMMAND表示的命令

作業示例

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

[root@localhost ~]# find /var -not -user root -a -group mail#執行命令
/var/spool/mail/rpc
/var/spool/mail/mageedu
/var/spool/mail/user1
/var/spool/mail/user2
/var/spool/mail/user3
/var/spool/mail/user4
/var/spool/mail/user5
/var/spool/mail/user6
/var/spool/mail/user7
/var/spool/mail/user8
/var/spool/mail/user9
/var/spool/mail/user10

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

[root@localhost ~]# find /var -not \( -user root -o -user lp -o -user gdm \) -ls#執行并詳細顯示結果
201328431    0 drwxr-xr-x   3 colord   colord         50 Jul 26 08:32 /var/lib/colord
  8438    0 drwxr-xr-x   2 colord   colord          6 Nov 20  2015 /var/lib/colord/icc
201356799    4 -rw-r--r--   1 colord   colord       4096 Jul 26 08:32 
.......

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

[root@localhost ~]# find /var -atime -7 -not -user root -not -user postfix -ls#執行并詳細顯示結果
201328431    0 drwxr-xr-x   3 colord   colord         50 Jul 26 08:32 /var/lib/colord
  8438    0 drwxr-xr-x   2 colord   colord          6 Nov 20  2015 /var/lib/colord/icc
67259713    0 drwx------   2 setroubleshoot setroubleshoot        6 Nov 20  2015 /var/lib/setroubleshoot
134301009    0 drwx------   2 rpc      rpc             6 Nov 20  2015 /var/lib/rpcbind
201329095    0 drwxr-xr-x   2 chrony   chrony         18 Aug 17 23:21 /var/lib/chrony
201404738    4 -rw-r--r--   1 chrony   chrony         42 Aug 17 23:21 /var/lib/chrony/drift
134301042    0 drwx------   2 tss      tss             6 Nov 21  2015 /var/lib/tpm
134301049    0 drwxr-xr-x   2 geoclue  geoclue         6 Nov 20  2015 /var/lib/geoclue

…..

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

 find / -nouser -nogroup -atime -7 -ls #執行并詳細顯示結果
30848    0 drwxrwxr-x   2 1001     1001            6 Aug 17 11:00 /home/user1/.config/abrt
67409330    4 -rw-------   1 1001     1001          122 Aug 17 21:04 /home/user1/.bash_history
67409284    0 drwx------   3 1002     1002           74 Aug 17 10:59 /home/user2
134376235    0 drwxr-xr-x   4 1002     1002           37 Jul 26 16:08 /home/user2/.mozilla
201404771    0 drwxr-xr-x   2 1002     1002            6 Jun 10  2014 /home/user2/.mozilla/extensions
 30836    0 drwxr-xr-x   2 1002     1002            6 Jun 10  2014 /home/user2/.mozilla/plugins
67409285    4 -rw-r--r--   1 1002     1002           18 Nov 20  2015 /home/user2/.bash_logout
67409286    4 -rw-r--r--   1 1002     1002          193 Nov 20  2015 /home/user2/.bash_profile
67409287    4 -rw-r--r--   1 1002     1002          231 Nov 20  2015 /home/user2/.bashrc
....

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

[root@localhost var]# find /etc -size +1M  -ls#執行并詳細顯示結果
201335240 3772 -rw-r--r--   1 root     root      3858924 Nov 21  2015 /etc/selinux/targeted/policy/policy.29
 48037 6824 -r--r--r--   1 root     root      6984832 Jul 26 08:28 /etc/udev/hwdb.bin

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

[root@localhost tmp]# find /etc -not -perm /222 -ls #執行并詳細顯示結果
394539    4 -r--r--r--   1 root     root          324 May 11 01:32 /etc/ld.so.conf.d/kernel-2.6.32-642.el6.x86_64.conf
393245    4 ----------   1 root     root          890 Aug 14 15:36 /etc/gshadow-
395245    4 -r--r-----   1 root     root         3729 Dec  8  2015 /etc/sudoers
394101    4 -r--r--r--   1 root     root          146 May 11 13:00 /etc/pam.d/cups
393979    4 ----------   1 root     root          882 Aug 15 14:35 /etc/gshadow
393494  340 -r--r--r--   1 root     root       346654 Jul 26 11:00 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
393496  204 -r--r--r--   1 root     root       208874 Jul 26 11:00 /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem

…..

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

[root@localhost tmp]# find /etc -not -perm -111 -ls#執行命令
393591    4 -rw-r--r--   1 root     root         1816 Feb  9  2016 /etc/login.defs
394159    4 -rw-r--r--   1 root     root          370 Oct 15  2014 /etc/pm-utils-hd-apm-restore.conf
393355    4 -rw-r--r--   1 root     root          118 May 20  2009 /etc/httpd/conf.d/mod_dnssd.conf
394292    4 -rw-r--r--   1 root     root          299 Feb  4  2016 /etc/httpd/conf.d/welcome.conf
394191    4 -rw-r--r--   1 root     root          392 May 12 03:29 /etc/httpd/conf.d/README
394354   36 -rw-r--r--   1 root     root        34419 Feb  4  2016 /etc/httpd/conf/httpd.conf
394357   16 -rw-r--r--   1 root     root        13139 May 12 03:29 /etc/httpd/conf/magic
393584    8 -rw-r--r--   1 root     root         4940 Feb 22  2013 /etc/man.config
393224    0 -rw-r--r--   1 root     root            0 Jul 26 10:58 /etc/crypttab
393516    4 -rw-r--r--   1 root     root           17 May 11 14:31 /etc/ld.so.conf.d/mysql-x86_64.conf

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

[root@localhost init.d]# find /etc/init.d/ -perm -113 -ls#執行命令
393230    0 -rwxrwxrwx   1 root     root            0 Aug 18 11:42 /etc/init.d/a

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

(0)
ladsdmladsdm
上一篇 2016-08-22
下一篇 2016-08-22

相關推薦

  • 8.3_Linux習題和作業

    課堂習題 1.當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 答:不能cd進該目錄 2.當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 答:不能查看目錄內的文件列表,不能cd,也不能查看目錄里面文件的元數據 3.當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件…

    Linux干貨 2016-08-04
  • centos7編譯安裝zabbix

    centos7源碼編譯安裝zabbix3 centos7源碼編譯安裝zabbix3 centos7源碼編譯安裝zabbix3 系統配置和必要的安裝包 編譯安裝nginx 編譯安裝php 安裝MariaDB 安裝JDK 安裝Zabbix3.0 前戲準備 開始編譯 開始安裝 zabbix虛擬主機創建 前戲準備 開始編譯 開始安裝 php配置 前戲準備 開始編譯 …

    Linux干貨 2016-11-25
  • 配置LAMP實現WordPress

    配置LAMP實現WordPress 在同一臺主機上實現LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3、Apache 2.4.6、MariaDB 5.5.52、PHP 5.4.16 1 安裝LAMP 采用yum方式進行安裝httpd、MariaDB、php、php-mysql,php-mysql用來進行php和M…

    2017-06-06
  • 網絡N22期+第一周作業

    一.計算機的組成及功能     計算機組成:         運算器           功能:對數據進行各種運算   &nbsp…

    Linux干貨 2016-08-15
  • linux同時創建多個目錄

    mkdir -p a_{c,d} b_{c,d} mkdir 同時創建多個文件夾 mkdir -p  mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sb…

    2017-08-28
  • linux進程和計劃任務

    內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等 進程管理:     系統優先級:數字越小,優先級越高    實時優先級: 99-0,值最大優先級最高    nice值:-20 到19 ,對應系統優先級100-139或99 Linux 內核:搶占式多任務  &nb…

    Linux干貨 2017-03-23
欧美性久久久久