find常用用法

find:

實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找;

工作特點:

相對于locate查找速度略慢;

精確查找;

實時查找;

語法:

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

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

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

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

        

查找條件:

根據文件名查找:

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

*, ?, [], [^]

[root@HJZX-TEST plugin]# find / -name fstab
/etc/fstab

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

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

[root@localhost ~]# find / -regex fstab                                      
[root@localhost ~]# 
[root@localhost ~]# find / -regex .*fstab.*                  
/etc/fstab
/lib/udev/fstab_import
/lib/udev/rules.d/79-fstab_import.rules
/usr/share/man/man8/fstab-decode.8.gz
/usr/share/man/man5/fstab.5.gz
/usr/share/vim/vim72/syntax/fstab.vim

根據屬主、屬組查找:

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

group GRPNAME: 查找屬組為指定組的文件;

[root@localhost home]# find /tmp -user gukai
/tmp/cc
/tmp/bb
/tmp/aa

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

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

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

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

[root@localhost home]# find /tmp -nouser                   屬主和屬組 被刪除 
/tmp/cc
/tmp/bb
/tmp/aa
[root@localhost home]# ll /tmp     
total 20
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 aa
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 bb
drwxrwxr-x. 2  500  500 4096 Jun 21 15:23 cc

根據文件類型查找:

-type TYPE:

f: 普通文件

d: 目錄文件

l: 符號鏈接文件

s:套接字文件

b: 塊設備文件

c: 字符設備文件

p: 管道文件

[root@localhost home]# find /etc/sysconfig/ -type l
/etc/sysconfig/network-scripts/ifup
/etc/sysconfig/network-scripts/ifdown
/etc/sysconfig/network-scripts/ifdown-isdn
/etc/sysconfig/network-scripts/ifup-isdn
/etc/sysconfig/selinux

組合條件:

需要一些集合知識幫助理解,

與:-a         求交集

或:-o         求并集

非:-not, !    求補集

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件;

find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls
[root@localhost home]# find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
1052517    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/cc
1052516    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/bb
1052515    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/aa
[root@localhost home]# find /tmp -not \( -user root -o -name 'fstab' \) -ls
1052517    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/cc
1052516    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/bb
1052515    4 drwxrwxr-x   2 500      500          4096 Jun 21 15:23 /tmp/aa

上面連個命令結果一樣

根據文件大小來查找:

-size [+|-]#UNIT

常用單位:k, M, G

#UNIT: (#-1, #]

-#UNIT:[0,#-1]

+#UNIT:(#,oo)

[root@HJZX-TEST ~]# find /etc -size 6k -ls              
1704278    8 -rwxr-xr-x   1 root     root         5178 Nov 22  2013 /etc/pki/tls/misc/CA
1967976    8 -rw-r--r--   1 root     root         5596 Jun 20  2013 /etc/my.cnf.d/modprobe.d/dist.conf
1706978    8 -rw-r--r--   1 root     root         5380 Jul 24  2015 /etc/rdma/fixup-mtrr.awk
1704290    8 -rw-r--r--   1 root     root         5596 Jun 20  2013 /etc/modprobe.d/dist.conf
1704267    8 -rw-r--r--   1 root     root         5325 Nov 11  2010 /etc/fonts/fonts.conf
1704798    8 -rwxr-xr-x   1 root     root         5430 Oct 10  2013 /etc/sysconfig/network-scripts/ifdown-eth
1705811    8 -rw-------   1 root     root         5640 Jan 23  2015 /etc/selinux/targeted/modules/active/homedir_template
1707018    8 -rw-r--r--   1 root     root         6111 Jul 24  2015 /etc/pcp.conf
····

上面搜出的結果是大小為 (5k,6k]的文件

find /etc -size  -6k  搜索 /etc 下大小為 [0,5k]的文件

find /etc -size  -6k  搜索 /etc 下大小為 (6k,-oo)的文件

根據時間戳:

以“天”為單位;

-atime [+|-]#,  

#: [#,#+1)

+#: [#+1,oo]

-#: [0,#)

-mtime

-ctime

以“分鐘”為單位:

-amin

-mmin

-cmin

假設當前時間為2016-06-17
10:10:10

find ./ 
-atime -2            //數字單位為天數.

-2:[0,48)從此刻算起,兩天之內  2016-06-15
10:10:10–2016-06-17
10:10:10 (且不包括這兩個時刻)

2:[48,72])從此刻算起,前三天的那一天   2016-06-14
10:10:10–2016-06-15
10:10:10

+2:(72,oo)從此刻算起,兩天之前的任何時間了  2016-06-14
10:10:10之前的任何時間了

根據權限查找:

-perm [/|-]MODE

MODE: 精確權限匹配

/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,之前是+MODE在centos7中已廢棄;

-MODE:每一類對象都必須同時擁有為其指定的權限標準。

例:

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

find /etc -not -perm -111

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

find /etc/init.d -perm -113

根據目錄深度查找:

-maxdepth #     第幾層目錄

例如 

find /home -maxdepth 1   /home下一層目錄的文件和目錄

        處理動作:

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

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

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

-fls /path/to/somefile:查找到的所有文件的長格式信息保存至指定文件中;

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

對于每個文件執行命令之前,都會交互式要求用戶確認;

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

{}: 用于引用查找到的文件名稱自身;

                

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

(0)
zxhyzxhy
上一篇 2016-06-23 11:13
下一篇 2016-06-23 11:13

相關推薦

  • liunx 命令幫助

    — help和-h ? 選項如下:

    Linux筆記 2018-04-01
  • 課堂練習及課后作業(0805文本處理工具)

    課堂練習: 1、找出ifconfig命令結果中本機的所有IPv4地址 2、查出分區空間使用率的最大百分比值 3、查出用戶UID最大值的用戶名、UID及shell類型 4、查出/tmp的權限,以數字方式顯示 5、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序 grep 1、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式…

    Linux干貨 2016-08-07
  • CentOS系統啟動流程與grub

    本文主要講述CenOS系統啟動的整個流程。 對于CentOS系統來說,整個啟動過程可分為4個階段,分別是:加點自檢,加載MBR,加載內核并執行初始化信息,初始化用戶空間。下面就具體來描述每個過程都做了什么。 一.加點自檢(power on system test,POST) 任何一種操作系統的啟動,第一步必定是加點自檢,主要功能是裝載在硬件芯片CMOS之上的…

    Linux干貨 2016-11-29
  • Linux Basics–part5

    1、顯示當前系統上root、fedora或user1用戶的默認shell ~]# grep “^\(root\|fedora\|user1\)” /etc/passwd | cut -d: -f7 或者 ~]# egrep “^(root|fedora|user1)” /etc/passwd | cut -d:…

    Linux干貨 2017-08-24
  • 基于kubernetes構建Docker集群管理詳解

    一、前言        Kubernetes 是Google開源的容器集群管理系統,基于Docker構建一個容器的調度服務,提供資源調度、均衡容災、服務注冊、動態擴縮容等功能套件,目前最新版本為0.6.2。本文介紹如何基于Centos7.0構建Kubernetes平臺,在正式介紹…

    2015-03-10
欧美性久久久久