文件查找和壓縮

文件查找

    在文件系統上查找符合條件的文件;

      文件查找:locate, find

       非實時查找( 數據庫查找) :locate

       實時查找:find

locate

      查詢系統上預建的文件索引數據庫   /var/lib/mlocate/mlocate.db

      依賴于事先構建的索引;

      索引的構建是在系統較為空閑時自動進行( 周期性任務) ;管理員手動更新數據庫(updatedb); ;

      索引構建過程需要遍歷整個根文件系統,極消耗資源;

      工作特點:查找速度快;模糊查找;非實時查找

      搜索的是文件的全路徑,不僅僅是文件名

      可能只搜索用戶具備讀取和執行權限的目錄

 locate KEYWORD

有用的選項

         ? -i 執行區分大小寫的搜索

         ? -n X 只列舉前X 個匹配項目

     例如:locate foo   搜索名稱或路徑中帶有“foo ”的文件

            locate -r ‘\.sh$’    使用Regex 來搜索以“.sh結尾的文件

blob.png

    find工具

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

         工作特點:

                    查找速度略慢

                    精確查找

                    實時查找

                    可能只搜索用戶具備讀取和執行權限的目錄

         語法:

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

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

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

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

    find查找條件

          根據文件名和inode 查找:

                -name " 文件名稱" :支持使用glob       *, ?, [], [^]

blob.png

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

                -inum n 按inode 號查找

blob.png

                -samefile name 相同inode 號的文件

                -links n 鏈接數為n 的文件

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

    根據屬主、屬組查找

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

blob.png

                -group GRPNAME: 查找屬組為指定組(GID) 的文件

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

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

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

blob.png

                -nogroup查找沒有屬組的文件

  根據文件類型查找

             -type TYPE:

                          f: 普通文件

                          d: 目錄文件

                          l: 符號鏈接文件

                          s:套接字文件

                          b: 塊設備文件

                          c: 字符設備文件

                          p: 管道文件

blob.png

  查找當前路徑下連接數為2 的普通文件

      組合條件

                   與:-a

                   或:-o

                   非:-not, !

      德·摩根定律:

     非(P 且 Q) = (非 P) 或 (非 Q)

     非(P 或 Q) = (非 P) 且 (非 Q)

     !A -a !B = !(A -o B) 非A 與 非B=非(A 或 B)

     !A -o !B = !(A -a B) 非A 或 非B=非(A 與 B)

find實例:找出/tmp 目錄下,屬主不是root ,且文件名不是fstab 的文件

find /tmp \( -not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls

blob.png

搜索結果并沒有這種文件

排除目錄:

find /etc -path ‘/etc/sane.d’ -a -prune -o -name *.conf -print

blob.png

      根據文件大小來查找

              -size [+|-]#UNIT

              常用單位:k, M, G

              #UNIT: (#-1, #] ,如:20k:大于19k,小于等于20k

              -#UNIT :[0,#-1], 如:-20k:大于等于0k,小于等于19k

              +#UNIT :(#, ∞ ), 如:+20k:大于20k

例:find -size 1024k 實際上是(1023k,1024k)

     find -size 1M 實際上是查找的0<x< =1M的文件

    根據時間戳

         以“天”為單位;

               -atime [+|-]#,

               #: [#,#+1)

               +#: [#+1, ∞ ]

               -#: [0,#)

               -mtime

               -ctime

          以“分鐘”為單位:

                             -amin

                             -mmin

                             -cmin

    根據權限查找

            -perm [/|-]MODE  匹配某一權限下的所有文件

                MODE: 精確權限匹配

                /MODE :任何一類(u,g,o) 對象的權限中只要能一位匹配即可,或關系,+ 從centos7 開始淘汰 

                -MODE :每一類對象都必須同時擁有指定權限,與關系

                 0表示不關注

          ? find -perm 755 會匹配權限模式恰好是755 的文件

          ? 只要當任意人有寫權限時,find -perm +222 就會匹配

          ? 只有當每個人都有寫權限時,find -perm -222 才會匹配

          ? 只有當其它人(other )有寫權限時,find -perm -002才會匹配

  處理動作

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

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

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

           -fls file :查找到的所有文件的長格式信息保存至指定文件中

         -ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認

         exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,直接執行,不詢問yes or no

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

         find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

         有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題      find | xargs COMMAND

   find實例:

          1 find -name “*.conf” -exec cp {} {}.org \;

            ? 備份配置文件,添加.orig 這個擴展名

          2 find /tmp -ctime +3 -user joe -ok rm {} \;

            ? 提示刪除存在時間超過3天以上的joe 的臨時文件

          3 find ~ -perm -002 -exec chmod o-w {} \;

            ? 在你的主目錄中尋找可被其它用戶寫入的文件

          4 find /data –type f -perm 644 -name *.sh –exec chmod 755 {} \;

            ·在date目錄下搜索權限是644,后綴為.sh的普通文件,并把權限改成755

          5 find /home –type d -ls

           · 搜索家目錄下的文件 只列出文件夾名,并顯示其屬性


 


find練習

1、查找/var 目錄下屬主為root ,且屬組為mail 的所有文件

blob.png

 2 、查找/var 目錄下不屬于root 、lp 、gdm 的所有文件

blob.png

 3 、查找/var 目錄下最近一周內其內容修改過,同時屬主不為root ,也不是postfix 的文件

[root@localhost ~]# find /var -mtime -7 -not -user root -a -not -user postfix -ls

blob.png

[root@localhost ~]# find /var -mtime -7 -not \( -user root -o -user postfix \) -ls

blob.png

 4 、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

[root@localhost ~]# find / \( -atime -7 -nouser -o -nogroup \) -ls

 5 、查找/etc 目錄下大于1M 且類型為普通文件的所有文件

blob.png

 6 、查找/etc 目錄下所有用戶都沒有寫權限的文件

blob.png

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

[root@localhost ~]# find /etc/ -not -perm /111 -ls

         部分搜索結果圖:

blob.png

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

[root@localhost ~]# find /etc/init.d/ -perm -111 -a -perm /002
[root@localhost ~]# find /etc/init.d/ -perm -113



Gnome搜索工具

        位置-> 搜索文件……

        圖形化搜索工具,可搜索:

                                    ? 命令

                                    ? 內容

                                    ? 用戶/ 組群

                                    ? 大小

                                    ? 修改時間

壓縮、解壓縮、歸檔工具

      file-roller圖形化工具    圖形界面,輸入命令file-roller

blob.png

    compress/uncompress工具

     compress [-dfvcVr] [-b maxbits] [file …]

             -d: 解壓縮

             -c: 結果輸出至標準輸出, 不刪除原文件

             -v: 顯示詳情

需要重定向

        uncompress 解壓縮  zcat file.Z >file   重定向

   gzip/gunzip工具

       gzip [OPTION]… FILE …

              -d: 解壓縮,相當于gunzip

              -c: 將壓縮或解壓縮的結果輸出至標準輸出

              -# :1-9 ,指定壓縮比,值越大壓縮比越大

           zcat :不顯式解壓縮的前提下查看文本文件內容

           實例:

                 gzip -c messages >messages.gz

blob.png

                 gzip -c -d messages.gz > messages

blob.png

                 zcat messages.gz > messages

      效果跟  gzip -c -d messages.gz > messages一樣

bzip2/bunzip2/bzcat工具

?       bzip2 [OPTION]… FILE …

             -k: keep, 保留原文件

             -d :解壓縮

             -# :1-9 ,壓縮比,默認為6

         bzcat:不顯示解壓縮的前提下查看文本文件內容,顯示解壓縮的過程

blob.png

   xz/unxz/xzcat工具

?           xz [OPTION]… FILE …

                   -k: keep, 保留原文件;

                   -d :解壓縮

                   -# :1-9 ,壓縮比,默認為6;

             xzcat: 不顯式解壓縮的前提下查看文本文件內容;

   zip/unzip工具

?          打包壓縮

                zip –r sysconfig sysconfig/   壓縮目錄,要加上-r

blob.png

            解包解壓縮

                unzip sysconfig.zip

                cat /var/log/messages | zip message –

                unzip -p message > message

   tar工具

        tar [OPTION]…   打包工具

          (1) 創建歸檔

               tar -c -f / PATH/TO/SOMEFILE .tar FILE… 

               tar cf / PATH/TO/SOMEFILE .tar FILE…

[root@localhost ~]# tar zcfv /testdir/etc.tar.gz /etc/

blob.png

打包并壓縮/etc/目錄到/testdir目錄下,顯示過程

          (2) 查看歸檔文件中的文件列表

               tar -t -f /PATH/TO/SOMEFILE .tar

          (3) 展開歸檔

               tar -x -f /PATH/TO/SOMEFILE .tar

               tar -x -f /PATH/TO/SOMEFILE .tar -C /PATH/

           結合壓縮工具實現:歸檔并壓縮

               -j: bzip2, -z: gzip, -J: xz

[root@localhost ~]# tar Jcfv /testdir/etc.tar.xz /etc/

blob.png

壓縮比更高,圖為三種壓縮的對比圖

[root@localhost ~]# tar tvf /testdir/etc.tar.gz

解壓縮前預覽文件,默認解壓到當前目錄下 ;-C 解壓到指定目錄下

 cpio工具

    cpio:cp復制  i:input  o:output

       復制 :    從某處復制,或者復制到某個文件

     cpio 命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以“.cpio” 或者“.tar” 結尾的文件。

     cpio [ 選項] > 文件名或者設備名

     cpio [ 選項] < 文件名或者設備名

             選項:

                -o 將文件拷貝打包成文件或者將文件輸出到設備上

                -i 解包,將打包文件解壓或將設備上的備份還原到系統

                -t 預覽,查看文件內容或者輸出到設備上的文件內容

                -v 顯示打包過程中的文件名稱。

                -d 解包生成目錄,在cpio 還原時,自動的建立目錄

                -c 一種較新的存儲方式

     實例

        將etc 目錄備份:

  find ./etc -print |cpio -ov >etc.cpio

blob.png

 內容預覽

 cpio –tv < etc.cpio

blob.png

部分文件截圖

        要解包文件  

  cpio –iv <etc.cpio
  cpio –idv < etc.cpio

原創文章,作者:舊城以西,如若轉載,請注明出處:http://www.www58058.com/35990

(0)
舊城以西舊城以西
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相關推薦

  • 第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示? cat(concatenate)#從頭開始看     文本文件查看工具 SYNOPSIS:     cat [OPTION]… [FILE]… -A 輸出行最后加上$號 -n 輸出行號 例…

    Linux干貨 2016-12-12
  • LVS DR模型演示

    LVS DR模型演示 環境介紹: Directory     DIP eth0    10.1.249.158     VIP eth0:0  10.1.249.111 rs1  &nbsp…

    2016-10-30
  • N25-第8周博客作業

    第八周 1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash # ip=172.16.250. for i in {1..254}; do if ping -w 1 -c 1 $ip$i &> /dev/n…

    Linux干貨 2017-03-10
  • 任務計劃2

    [root@localhost app]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/bin MAILTO=root   # For details see man 4 crontabs   # Example of job defi…

    Linux干貨 2017-05-15
  • LVS詳解

    LVS詳解 LVS(Linux Virtual Server),意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。 LVS 是一個工作在四層的負載均衡器,實現和 iptables/netfilter 類似,工作在內核空間的 TCP/IP 協議棧上,LVS 工作在 INPUT H…

    Linux干貨 2016-11-11
  • CentOS 5.0系統啟動流程

    注:CentOS系統5.x,6.x和7.x的啟動流程不同,所以本文僅討論CentOS 5.x的啟動流程。 1. POST加電自檢 服務器在開機之后首先會先進行硬件的檢測,在開機界面我們可能會看到檢測硬盤,cpu或raid卡等信息,此界面即硬件自檢界面。 2. BIOS引導 BIOS(BootSequence)用于通過指定的引導裝置引導系統啟動。 3. Boo…

    2017-05-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 10:43

    總結的很詳細,find命令是我們以后筆試中常出現的考點,需要我們多加練習,能進行熟練運用。

欧美性久久久久