linux 操作系統find命令操作總結

      find 在linux系統中功能非常強大,根據各種給出的條件在系統搜索所需內容。

      語法爲: find 路徑 -命令參數 [輸出形式]  

                   這裏需要注意:路徑緊跟在命令之後

    以下介紹具體用法:

         1, 查找按文件名:-name

                   find  /etc  -name  passwd   :   在etc目錄下查找名爲:passwd的目錄,軟鏈接,普通文件。。。。。

                                                                 默認find將查找到的文件顯示出來。和-printf作用相同

                   find  /etc  -name "[0-9]*"  :在etc目錄下查找文件名一數字開頭的文件

                   find /etc ! -name passwd: 在etc目錄下查找名不爲passwd的文件。

          2,查找時指定查找的目錄層級:-maxdepth

                  find  /etc  -maxdepth 3  -name "[0-9]*"  :在etc目錄及以下3層目錄中查找文件名以數字開頭的文件。

          3,按修改時間進行查找:-mtime -mmin -atime -amin -ctime -cmin

                  find / -mtime +500 :查找系統中修改時間爲500天以前的文件

                  find / -mtime +500 :查找系統中修改時間爲500天當天修改的文件

                  find / -mtime -500 : 查找系統中修改時間爲500天以內修改的文件

                  find / -mmin -5 : 查找系統中修改時間爲5分鐘以內修改的文件

                  -atime -amin -ctime -cmin 與-mtime -mmin同理

         4, 按文件權限來查找:-perm

                -perm 後面跟的模式分爲3種:mode 、-mode、+mode

            mode:完全匹配,如mode爲755轉換爲二進制位111 101 101,要求查找出來的文件權限的

                  二進制位必須一一對齊即爲755.

            find /etc -perm 755 :在系統中查找文件權限爲755的文件。

          

                   -mode:表示mode轉換成二進制中1的文件權限必須匹配,如:644 二進制位110 100 100

                                要求查找的文件權限二進制必須爲11x,1xx,1xx,其中x位既可以爲0,也可以爲1.

                               也就是查找的文件權限必須包含-mode的權限二進制的中1的位置。如:110 110 110

                               、111 110 110、111 111 111、均匹配,101 100 100 就不匹配因爲前三位屬主權限

                              w的權限不匹配。

                

                  +mode:要求mode給出的權限二進制中含有1的位,任意一個匹配即可。-mode要求給出的

                                權限二進制中含有1的位都必須匹配,如:644轉換爲二進制位110 110 100 

                                即、100 100 100、010 100 100、110 010 100、110 100 100 均匹配。

               截圖待定

       5,按屬主-user username,屬組查找-group groupname,無屬主-nouser,無屬組-nogroup

                find /var -type f -user jjj     :查找/var中屬主爲jjj的文件

            

                find /home -type -group uuu01 :查找/home中屬組爲uuu01的文件

           

               find /home -type -user jjj -group uuu01 :查找/home中屬主爲:jjj 屬組爲:uuu01的文件

           

              find / -type f -nouser:查找系統無屬主的文件

          

             由圖可見屬主名稱爲包含在/etc/passwd中用UID來顯示

              find / -type f -nogroup :查找無屬組的文件

              find / -type f -nouser -o -nogrop :查找無屬主文件或無屬組的文件。

       6,按文件大小查找 :-size

                 -size 後面接三種模式的文件大小:

                               n:等於n的文件

                             +n :大於n的文件

                              -n :小於n的文件

                             另外:n如果指定單位(K M G)則按指定單位查找,若未指定單位,則默認單位爲塊

                                      1塊爲512字節即 2048爲1M  1024*2*512byte=1024*1KB=1M

                                      也指定單位爲c即爲字符 1024c=K  10240c=10K

                    find / -type f -size +1G :查找系統中大於1GB的文件

           

                   find / -type f -size 4096 :查找系統中大小爲2M的文件:4096*512byte=2M

           

        7,按文件類型查找:-type d/f/b/c/p/l/s

        8,參照文件新舊查找:-newer

                  find / -type f -newer ./i -exec ls -l {} \;  :在系統查找比i文件更新的文件                

            

                 -newer file1 ! file2 :查找更改時間比file1新但比file2舊的文件

         9, -depth:查找文件時先查找當前目錄,在查找其他目錄。

         10,-mount:在查找文件時不跨越文件系統mount點。

         11, -follow:遇到符號鏈接文件時,跟蹤至鏈接所指向的文件。

         12, -cpio:對匹配的文件使用cpio命令,將這些文件備份至磁帶設備中。

         13, -fstype:查找位於某一文件系統中的文件,文件系統類型參考/etc/fstab

         14,兩個條件同時滿足:-a    兩個條件滿足任意一個:-o

             

            15,對查找後的內容進行操作:-exec -ok

                   -exec和-ok不同之處在於:-ok每次進行操作之前會詢問

            16,查找排除目錄:-prune (如果同時制定了-depth,那麼-prune將忽略)     

            在Windows中可以在某些路徑中查找文件,也可以設定不在某些路徑中查找文件,下面用Linux中的find的命令結合其-path -prune參數來看看在Linux中怎麼實現此功能。

假如在當前目錄下查找文件,且當前目錄下有很多文件及目錄(多層目錄),包括dir0、dir1和dir2 ...等目錄及dir00、dir01...dir10、dir11...等子目錄。

1. 在當前目錄下查找所有txt後綴文件

    find ./ -name *.txt

2.在當前目錄下的dir0目錄及子目錄下查找txt後綴文件

    find ./ -path './dir0*' -name *.txt

3.在當前目錄下的dir0目錄下的子目錄dir00及其子目錄下查找txt後綴文件

    find ./ -path '*dir00*' -name *.txt

4.在除dir0及子目錄以外的目錄下查找txt後綴文件

    find ./ -path './dir0*' -a -prune -o -name *.txt -print

說明:-a 應該是and的縮寫,意思是邏輯運算符‘或’(&&); -o應該是or的縮寫,意思是邏輯運算符‘與’(||), -not 表示非.

命令行的意思是:如果目錄dir0存在(即-a左邊爲真),則求-prune的值,-prune 返回真,‘與’邏輯表達式爲真(即-path './dir0*' -a -prune 爲真),find命令將在除這個目錄以外的目錄下查找txt後綴文件並打印出來;如果目錄dir0不存在(即-a左邊爲假),則不求值-prune ,‘與’邏輯表達式爲假,則在當前目錄下查找所有txt後綴文件。

5.在除dir0、dir1及子目錄以外的目錄下查找txt後綴文件

    find ./ /( -path './dir0*' -o -path './dir1*' /) -a -prune -o -name *.txt -print

注意:圓括號()表示表達式的結合。即指示 shell 不對後面的字符作特殊解釋,而留給 find 命令去解釋其意義。由於命令行不能直接使用圓括號,所以需要用反斜槓'/'進行轉意(即'/'轉意字符使命令行認識圓括號)。同時注意'/(','/)'兩邊都需空格。

6.在dir0、dir1及子目錄下查找txt後綴文件

    find ./ /( -path './dir0*' -o -path './dir1*' /) -a -name *.txt -print

 

+1. 在所有以名爲dir_general的目錄下查找txt後綴文件

find ./ -path '*/dir_general/*' -name *.txt -print

       



                                                              



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章