linux-find查找

導語:
which
whereis
locate
find

查找
which 只能查詢命令
#which rpm

whereis
可以查詢命令和配置文件的位置
#whereis rpm
#whereis passwd

whatis
#whatis rpm 和下面命令一樣的效果,查詢rpm命令都在哪章man有解釋
#man -f rpm

locate
維護着一個查詢數據庫
#vim /etc/updatedb.conf
1)文件系統類型
2)目錄
如果被更改之後,需要更新數據庫
#updatedb 手動更新數據庫

#locate 被查找的關鍵字
#locate *.txt
*是通配符 

find
#find 路徑 條件 跟條件相關的操作符 [-exec|-ok 動作]
路徑
默認不寫路徑時查找的是當前路徑
例:
/etc
./
/
/var/ftp

條件
名稱 大小 時間 文件類型 用戶 組 權限 ...

-name 文件名稱 按名稱查找

find / -name a.txt

#find / -name a.t??
 find / -name a.tx?
#find / -name '*a.txt'
 find / -iname '*a.txt'

-iname 不區分大小寫

?表示單個字符
*表示所有字符

一般情況下{}不能用
{1..100}
{abc,abd,efg}

通配符:

  • ? [] {}
  • 表示所有字符
    ? 表示任意單個字符
    [] 表示其中任意一個單個字符
    例:
    [abc]
    [a-z]
    [a-Z]
    [a-zA-Z]
    [!a-z] !取反
    [0-9]

    a到Z的匹配順序是aAbBcC...
    [root@server python]# ls
    a.txt E.txt j.txt N.txt s.txt W.txt
    A.txt f.txt J.txt o.txt S.txt x.txt
    b.txt F.txt k.txt O.txt t.txt X.txt
    B.txt g.txt K.txt p.txt T.txt y.txt
    c.txt G.txt l.txt P.txt u.txt Y.txt
    C.txt h.txt L.txt q.txt U.txt z.txt
    d.txt H.txt m.txt Q.txt v.txt Z.txt
    D.txt i.txt M.txt r.txt V.txt
    e.txt I.txt n.txt R.txt w.txt

    {hello,hi,king,xiaoxuan}
    #touch {python,wing,haha}.txt
    {a..z}
    {1..100}
    /dev/vdc{1,2,3}

按大小查找
-size
#find / -size 50M
#find / -size +50M
#find / -size -50M
查找大於10M小於20M
#find / -size +10M -a -size -20M

-a可以換成-and
#find / -size -10M -o -size +20M

-o可以換成-or
find ./ ! -size -10M
find / -size -50M -a -name "wing"
find / ! ( -size -50M -a -name "wing" )
!取反

( )
\ 轉義字符 把有意義的變的沒意義 把沒意義的變的有意義

附加:用dd命令做測試數據
#dd if=/dev/zero of=/tmp/aa.txt bs=5M count=2

按文件類型查找
-type
f
d
b
c
l
s
p
#find / -type c -exec ls -l {} \;

#find /tmp/ -name aa.txt -exec rm -i {} \;
find /tmp/ -name aa.txt -ok rm {} \;
< rm ... /tmp/aa.txt > ? y

-exec 對之前查找出來的文件做進一步操作
-ok 和-exec一樣,只不過多了提示

按權限查找:
-perm
find ./ -perm 644 -ls
./dd.txt

按用戶和組查找
-user
-group
#find ./ -user wing
./bb.txt
find ./ -group user3
./cc.txt

按時間
-atime access時間
-mtime modify時間
-ctime change時間
-amin
-mmin
-cmin

time表示單位是天
min 表示分鐘
#stat 文件

查找兩分鐘內訪問過的文件
#find /tmp -amin -2
/tmp/a.txt

查找兩分鐘前訪問過的文件
find /tmp -amin +2

查找一個文件的硬鏈接:
ln a.txt heihei
#ll -i
439360 -rw-r--r-- 2 root root 12 Nov 29 22:22 a.txt
439360 -rw-r--r-- 2 root root 12 Nov 29 22:22 heihei
find . -samefile a.txt
./a.txt
./heihei

指定查找的目錄深度:
-maxdepth levels
-mindepth levels
find / -maxdepth 3 -a -name "ifcfg-eth0"

按正則表達式查找:
find /etc -regex '.*ifcfg-ens[0-9][0-9]'



-exec -ok
#find . -name wing.txt -exec cp {}  /root/Desktop/ \;

防止被查找到的文件過多,導致內存溢出錯誤
 find  .  -name wing.txt | xargs  -i cp {} /root/Desktop
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章