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
下一篇 2016-06-23

相關推薦

  • vsftpd權限配置

    要求 :完成vsftpd配置,   (1) 禁錮系統用戶于家目錄;   (2) 基于mysql進行用戶認證;   (3) 不同的虛擬用戶擁有不同的權限設定. 解答:  (1) 首先安裝需要的系統環境和軟件 yum groupinstall -y "Development&nbsp…

    Linux干貨 2016-10-24
  • 初探VIM_第六周練習(02)

    引言—什么是Vim? 接觸Linux這么久,想必對于一切皆文件的哲學思想已經不陌生了。因此,學習并掌握用一款Linux文本編輯器,對于玩轉LInux來說,是很有必要的。 vi編輯器是Unix系統最初的編輯器,它使用控制臺圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文件中移動、插入、編輯和替換文本。 在GNU項目將vi編輯器移植到開源世界時,…

    Linux干貨 2016-12-18
  • linux系統用戶管理和grep正則表達式練習

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

    Linux干貨 2018-03-25
  • N25-第二周作業

    N25-第二周作業 博客作業 1、linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 linux上處理目錄的常用命令: ls :列出目錄 cd :切換目錄 pwd:顯示當前工作路徑 mkdir:創建目錄 rm:刪除文件或目錄 rmdir:刪除空文件 mv:剪切、重命名文件、目錄 cp:復制文件或目錄 touch:創建空文件 ls:= li…

    Linux干貨 2017-02-08
  • 正則表達式與擴展正則表達式

    基本正則表達式 字符匹配:.:匹配任意單個字符[]:匹配指定范圍內的任意單個字符[^]:匹配指定范圍外的任意單個字符[-]:匹配[]中指定范圍內的任意一個字符,要寫成遞增POSIX字符類:[:digit:]:匹配任意一個數字字符[:lower:]:匹配小寫字母[:upper:]:匹配大寫字母[:alpha:]:匹配任意一個字母字符(包括大小寫字母)[:aln…

    2017-09-10
  • 少走冤枉路!帶你走過SNMP的那些坑

    SNMP(Simple Network Management Protocol)即簡單網絡管理協議,是在網絡與系統監控領域中,最常使用的一種數據采集技術。盡管這個協議非常簡單,但在大規模IT環境監測中,還是經常會碰到各種坑,因此優云開源了一套友好的SNMPAPI,并通過本文簡單介紹這套API中的一些特點,希望幫助各位運維同仁提前規避一些問題。 特點[0].&…

    2016-06-22
欧美性久久久久