Linux中的文件查找和解壓縮

     Linux的文件查找

概述:

     本章將主要介紹在Linux中怎樣查找文件和解壓縮。需要我們掌握的知識有:locatefind 命令的使用,以及如何使用壓縮和解壓縮工具。


一、Linux文件查找

     在文件系統上常常需要根據文件的各種屬性去查找符合條件的文件,此前使用的grep,egrep,fgrep屬于文本過濾、文本搜索工具;而文件查找工具有兩個,locate和find

    1.文件查找分為兩類:

        □實時查找:偏歷所有文件進行條件匹配       find

        □非實時查找(數據庫查找):根據索引查找  locate

    2.locate

        □查詢系統上預建的文件索引數據庫

              /var/lib/mlocate/mlocate.db

       依賴于事先構建的索引

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

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

       工作特點:

              查找速度快

              模糊查找

              非實時查找

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

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

    □locate KEYWORD

       有用的選項

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

              -n N只列舉前N個匹配項目

       示例:

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

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

二、find

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

       工作特點:

            查找速度略慢

            精確查找

            實時查找

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

   2.語法:

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

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

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

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

   3.查找條件:

      根據文件名和inode查找:

           -name "文件名稱":支持使用glob   *, ?, [], [^] 文件名稱一定加引號!

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

           -inumn 按inode號查找

           -samefilename 相同inode號的文件

           -links n 鏈接數為n的文件

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

     根據屬主、屬組查找

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

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

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

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

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

           -nogroup:查找沒有屬組的文件

     根據文件類型查找:

           -type TYPE:  如: find /etc/ -type f

              f: 普通文件

              d: 目錄文件

              l: 符號鏈接文件

              s:套接字文件

              b: 塊設備文件

              c: 字符設備文件

              p: 管道文件

     組合條件

             與:-a

             或:-o

             非:-not, !

        德·摩根定律

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

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

      示例:

          !A -a !B = !(A -o B)

          !A -o !B = !(A -a B)

find示例:

    find -name snow.png    搜索名為snow.png的文件

        find -iname snow.png   不分大小寫地搜索名為snow.png、Snow.png、SNOW.PNG等等的文件

        find / -name “*.txt”  搜索根目錄下所有以.txt結尾的文件

        find /var –name “*log*”

        find -userjoe -group joe    搜索被用戶joe 以及組群joe所擁有的文件

        找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件

            find /tmp \( -not -user root -a -not -name 'f*' \) -ls

            find /tmp -not \( -user root -o -name 'f*' \) –ls

       排除目錄

        示例:查找/etc/下,除/etc/sane.d目錄的其它所有.conf后綴的文件

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

   根據文件大小來查找:

         -size [+|-] #UNIT  如:find /etc/ -size 6k

       常用單位:k, M, G

            注意:這里這里的區間,包含和不包含的關系。

            #UNIT: (#-1, #]    如:6k 表示(5k,6k]

            -#UNIT:[0,#-1]    如:-6k 表示[0,5k]

            +#UNIT:(#,∞)     如:+6k 表示(6k,∞)

   根據時間戳:

         以“天”為單位; 如: find  /etc/ -atime 7

          -atime [+|-]#,

               #: [#,#+1)   如:7 表示[7,8)

              +#: [#+1,∞] 如:    +7 表示 [8,∞)

              -#: [0,#)     如:   -7 表示 [0,7)

          -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才會匹配

     4.處理動作

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

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

        -delete:刪除查找到的文件;(不建議使用)

        -fls file:查找到的所有文件的長格式信息保存至指定文件中(相當于重定向)

        -ok COMMAND {} \;(固定格式) 對查找到的每個文件執行由COMMAND指定的命令;

ok.png

             對于每個文件執行命令之前,都會交互式要求用戶確認(-exec 不用確認,直接操作)

     -exec COMMAND {} \;對查找到的每個文件執行由COMMAND指定的命令

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

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

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

              find | xargs COMMAND

示例:
   find -name “*.conf” -exec cp {} {}.org \; (一定要注意格式,后面加斜杠和分號)

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

     find /tmp -ctime +3 -userjoe -ok rm {} \;

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

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

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

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

           找到/data 目錄下所有文件名以.sh后綴,且權限為644的普通文件,然后把權限改為755

     find /home –type d -ls

        Linux系統解壓縮

概述

  本章將介紹Linux系統中的壓縮和解壓縮的工具,以及歸檔工具(tar,cpio)

      compress/uncompress: 對應 .Z 結尾的壓縮格式文件;

      gzip/gunzip:          其對應的是 .gz 結尾的壓縮格式文件;

      bzip2/bunzip2:       其對應的是 .bz2 結尾的壓縮格式文件;

      xz/unxz:               其對應的是 .xz 結尾的壓縮格式文件;

      zip/unzip              其對應的是 .zip 結尾的壓縮格式文件


一、compress和uncompress

     □語法:compress [-dfvcVr] [-b maxbits] [file …]

              -d: 解壓縮,相當于 (可以配合 -c 保留壓縮文件)

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

              -v: 顯示詳情

     uncompress解壓縮

     zcat file.Z > file


二、gzip和gunzip(使用最多)

     □語法:gzip[OPTION]… FILE …

            -d: 解壓縮,相當于gunzip

gzip.png

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

gzip-1.png

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

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

    實例:

           gzip -c messages > messages.gz 

           gzip -c -d messages.gz > messages

           zcatmessages.gz > messages


三、bzip2/bunzip2/bzcat

   □語法bzip2 [OPTION]… FILE …

           -kkeep, 保留原文件

           -d解壓縮

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

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


四、xz/unxz/zxcat(壓縮比最強)

     □語法:xz[OPTION]… FILE …

           -kkeep, 保留原文件

           -d:解壓縮

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

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


五、zip/unzip

     語法:zip zipfile.zip  /path/to/somefile

     □打包壓縮

           zip –r sysconfigsysconfig/

zip.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…

    (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

七、cpio

    復制從或到文件

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

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

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

    選項

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

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

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

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

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

           -c 一種較新的存儲方式

   示例:

        將etc目錄備份:

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

        內容預覽

            cpio–tv< etc.cpio

        要解包文件

            cpio–iv <etc.cpio

            cpio–idv< etc.cpio


原創文章,作者:zhumengxiaotao,如若轉載,請注明出處:http://www.www58058.com/37438

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • 第八周作業

    1. 寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主機使用紅色顯示; #!/bin/bash # for i in {1..254};do         pi…

    Linux干貨 2017-02-24
  • vim編輯器的用法

    vim編輯器的用法 1、vi的基本概念     vi可以分為三種模式,分別是命令模式(command mode)、輸入模式(Insert mode)和末行模式(last line mode),各模式的功能如下:     1) 命令行模式command mode)         …

    Linux干貨 2015-09-14
  • SHELL腳本編程之變量的種類

    變量 在進行腳本編程的時候,經常會使用到不同類型的變量,根據變量的生效范圍,可大致分為以下的幾類: 本地變量:生效范圍為當前shell進程,對當前shell之外的其他shell進程,包括當前shell進程的子shell進程都是無效的,它的作用域就是當前shell進程 環境變量:生效范圍是當前shell進程及其子進程 局部變量:生效范圍是當前shell進程中某…

    Linux干貨 2016-08-12
  • KVM基本功能

    前言:本來想寫出關于KVM的精品文章,然而學的時間不夠長,理解也不夠透徹。所以有關KVM的高級功能只能等下一次在寫。本次只涉及到KVM的基礎核心功能,平時經常會使用的功能.。 一、環境準備: 1、BIOS啟用Virtualication。 2、在linux系統上查看系統是否支持硬件虛擬化。Intel系列CPU支持虛擬化標識為vmx,AMD系列CPU標識為sv…

    Linux干貨 2015-10-27
  • 馬哥教育網絡班20期-第三周課程作業

    Table of Contents 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers…

    Linux干貨 2016-06-26
  • 使用ssh比較慢的小結

    1)情況說明 a、ping ip,響應正常 b、telnet ip,響應正常 c、ssh ip,響應慢,但是等很大會后還是能打開 2)處理方法 方法1: 修改本地中的/etc/ssh/ssh_config,把參數改為GSSAPIAuthentication no 方法2: a、修改遠程服務器端的/etc/ssh/sshd_config ,把參數改為GSSAP…

    系統運維 2016-12-05
欧美性久久久久