天天看點

find用法總結

專門的檔案查找工具----find

         find指令用來在某個目錄及其子目錄中查找特定的檔案。find指令很強大,它實時的搜尋目錄樹。

     常見用法示例:

     find  path -option [-print] [-exec -ok  command]  {} \;

  1. #print将查找到的檔案輸出到标準輸出  
  2. #exec command {}\;将查找到的檔案執行command操作。{}和 \之間有空格  
  3. #ok 和 exec相同,差別在于操作前要詢問使用者,是互動式的 

       查找條件如下圖:

find用法總結

       多個處理動作之間用邏輯關系來連接配接:-a(與) -o(或) !(非)

1 根據檔案名大小寫 

-name filename 區分大小寫

-iname filename 不區分大小寫

   (為了示範需要,在目前目錄下建立兩個檔案 passwd 和PASSWD)

find用法總結

   可以清楚的看到-name 區分大小寫;-iname不區分大小寫

2   根據檔案屬主、屬組

-user username   根據屬主

-group groupname  根據屬組

-uid          根據指定UID

-gid          根據指定GID

-nouser     指定沒有屬主的檔案

-nogroup   指定沒有屬組的檔案

 (為了示範需要,把passwd的屬組改為redhat ;把PASSWD的屬主改為redhat;id -u redhat 為501)

find用法總結

3 根據檔案類型

-type b/c/d/f/l/p     查是塊裝置、字元裝置、目錄、普通檔案、符号連結、管道

(為passwd 建立一個連結為pas)

find用法總結

      -type的其他選項,用法相同

4 根據檔案大小

-size  nk   大小為1-nk的檔案

-size +nk  大于nk的檔案

find用法總結

5 根據檔案的時間狀态

解釋什麼是atime ctime mtime

atime (access time):最後一次通路檔案的時間

mtime(medify time):最後一次修改檔案的時間

ctime(change time):最後一次改變檔案(改變的是原資料即屬性)的時間

如:記錄該檔案的inode節點被修改的時間。touch 指令除了-d -t選項外都會改變改時間,而且chmod,chown等指令也能改變該值

三者之間的關系

      當修改mtime時,ctime必須随着改變,因為檔案大小等屬性;有人說atime 也一定會改變,要想修改檔案必須先通路;其實是不對的,不必通路檔案就能修改内容:如#echo "change it" >> /etc/inittab ,inittab檔案内容會改變,但并沒有通路檔案,是以atime沒有改變

  檢視三者的指令

stat filename  可以檢視三者的時間值

  ls -l filename  檢視檔案修改時間

  ls -lc filename  檢視檔案狀态改動時間

  ls -lu filename   檢視檔案通路時間     

修改三者的指令

touch [option] [[CC]YY]MMDDhhmm[.ss]

      options:

             -t     後面可接時間,其格式如上所述

            -a     僅修改access time

            -c   僅修改時間而不建立檔案

            -m   僅修改mtime

find用法總結

    201206241045.30  表示時間為:2012年6月24日10點45分30秒

(拷貝/etc/inittab 到目前目錄下,作為例子)

find用法總結

   對于-type的用法如下

-atime/-ctime/-mtime    機關是天

-amin/-cmin/-mmin     機關是分

-amin/-cmin/-mmin   n/+n/-n    剛好n天/超過n天/n天之内

查找目前目錄下5分鐘之内ctime 改變的檔案

find用法總結

 6 根據檔案通路權限

find -perm mode

find -perm -mode

find -perm  /mode

       那麼這三者之間有什麼差別呢?解釋之前先簡單說一下linux中檔案權限位的概念。在linux中檔案或目錄有3個權限r,w,x分别代表讀、寫、執行。而一個檔案或目錄的屬性中又包括屬主u、屬組g、其他o三個部分。

        屬主                   屬組                     其他

         rwx                     rwx                      rwx

       使用者在其擁有權限上的位上設定為1,沒有的權限的位設定為0.如果将每個部分的這些權限位看成是二進制數,每個部分可以用3位二進制數表示,最大值為7,表示可讀、可寫、可執行。

現在來看一下find -perm

find -perm mode 表示嚴格比對,也是就你的檔案權限位轉換成對應的十進制數與mode一摸一樣,才算比對成功,如果mode給的數字不足3位,那麼前面自動添加0

find -perm -mode  表示mode中轉換成二進制的1在檔案權限位裡面必須比對,比如:mode=644 那麼轉換成二進制為110 100 100 ,而被查找的檔案的的權限位在1的部分必須完全比對,而0則不管。例如被查找的檔案為111 111 111 那麼是比對成功,而100 100 100 則比對失敗。是以-mode就是比對比mode 權限更充足和完善的檔案

find -perm /mode   與-mode的差別是它隻需要其中任意一個1的部分被比對即可

find用法總結

可以看到 a ab abc 的權限分别為600 640 666

find -perm 640 是做精确比對,隻會比對到640即 ab

find -perm -640 做比640更充足的比對,當然666是滿足的,即 ab abc

繼續閱讀