13 文件查找與壓縮

  • locate

  • find

  • 壓縮命令

    • file-roller、compress/uncompress(.Z)、gzip/gunzip(.gz)、bzip2/bunzip2(.bz2)、xz/unxz(.xz)

    • zip/unzip、tar


locate

  • 數據源

    1)查詢系統上預建的文件索引數據庫
        
    2)依賴于事先構建的索引
        索引的構建是在系統較為空閑時自動進行(周期性任務),管理員手動更新數據庫()
    3)索引構建過程需要遍歷整個根文件系統,極消耗資源
  • 工作特點

    ? 查找速度快
    ? 模糊查找
    ? 非實時查找
    ? 搜索的是文件的全路徑,不僅僅是文件名
    ? 可能只搜索用戶具備讀取和執行權限的目錄
  • 用法

    locate KEYWORD
    【選項】
        ? -i        :執行區分大小寫的搜索
        ? -n  N     :只列舉前N個匹配項目
        ? -r        :支持基本正則
        ? --regex   :支持擴展正則
  • 示例

    ## 搜索名稱或路徑中帶有“foo”的文件
    locate  foo
    ## 使用Regex來搜索以“.foo”結尾的文件
    locate  -r  ‘\.foo$’

find

  • 工作特點

    ? 查找速度略慢
    ? 精確查找
    ? 實時查找
    ? 可能只搜索用戶具備讀取和執行權限的目錄
    ? 實時查找工具,通過遍歷指定路徑完成文件查找;
  • 語法

    find [OPTION]... [查找路徑] [查找條件] [處理動作]【說明】
        查找路徑:指定具體目標路徑;默認為當前目錄
        查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件
        處理動作:對符合條件的文件做操作,默認輸出至屏幕
  • 查找條件

    【根據文件名和inode查找】
        -name   "filename"  :支持使用glob編碼 *, ?, [], [^]    
        -iname  "filename"  :不區分字母大小寫    
        -inum       n       :按inode號查找    
        -samefile name      :相同inode號的文件    
        -links      n       :鏈接數為n的文件    
        -regex  "PATTERN"   :以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱【根據屬主、屬組查找】
        -user   USERNAME    :查找屬主為指定用戶(UID)的文件    
        -group  GRPNAME     : 查找屬組為指定組(GID)的文件    
        -uid    UserID      :查找屬主為指定的UID號的文件    
        -gid    GroupID     :查找屬組為指定的GID號的文件    
        -nouser             :查找沒有屬主的文件    
        -nogroup            :查找沒有屬組的文件【根據文件類型查找】
        -type TYPE:        
            ? f: 普通文件
            ? d: 目錄文件
            ? l: 符號鏈接文件
            ? s:套接字文件
            ? b: 塊設備文件
            ? c: 字符設備文件
            ? p: 管道文件
  • 【根據文件大小來查找】
        -size [+|-]#UNIT    ### UNIT常用單位:k, M, G        
             #UNIT:(#-1, #]  如: 6k 表示 (5k,6k]        
            -#UNIT:[0,#-1]   如:-6k 表示 [0,5k]    
            +#UNIT:(#,∞)     如:+6k 表示 (6k,∞)
            
        0-----------------5k------6k----------------------------- ∞
        [-----  -6k  -----](--6k--](------------- +6k -----------……
  • 【根據時間戳】
        以“天”為單位:
            -atime [+|-]#             
                # : [#,#+1) 
                +#: [#+1,∞]            
                -#: [0,#)
            -mtime        
            -ctime    
            -∞ days ago -----------------------8days---------------7days-------------------- now    
            …… …… ------------ +7 --------------](------- 7 --------](---------- -7 ----------] 
            
        :
        -amin    
        -mmin    
        -cmin
  • 【 根據權限查找】
        -perm [/|-]MODE    
         MODE: 精確權限匹配 
        /MODE: 任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+從centos7開始淘汰                  
        -MODE: 每一類對象都必須同時擁有指定權限,與關系
            0: 表示不關注
            
        例如:
            ? find -perm 755        ### 會匹配權限模式恰好是755的文件
            ? find -perm +222       ### 只要當任意人有寫權限時
            ? find -perm -222       ### 只有當每個人都有寫權限時
            ? find -perm -002       ### 只有當其它人(other)有寫權限時
    
    【組合條件】
        與:-a
        或:-o
        非:-not, !
    
    【德·摩根定律】
        (非 P) 或 (非 Q) = 非(P 且 Q) 
        (非 P) 且 (非 Q) = 非(P 或 Q) 
        【示例】
        !A -a !B = !(A -o B)
        !A -o !B = !(A -a B)
  • 處理動作

    -print      :默認的處理動作,顯示至屏幕;
    -ls         :類似于對查找到的文件執行“ls -l”命令
    -delete     :刪除查找到的文件;
    -fls file   :查找到的所有文件的長格式信息保存至指定文件中
    
    -ok COMMAND {} \; 對查找到的每個文件執行由 COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認
    -exec COMMAND {} \; 對查找到的每個文件執行由 COMMAND指定的命令,其中?{}: 用于引用查找到的文件名稱自身
  • 【注意】
     1)find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令 
     2)有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題 
              find | xargs COMMAND
【示例】        
find -name “*.conf” -exec cp {} {}.org \;       ### 備份配置文件,添加.orig這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;      ### 提示刪除存在時間超過3天以上的joe的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;         ### 在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
find /home –type d -ls

壓縮命令

compress / uncompress

compress [-dfvcVr] [-b maxbits] [file ...]
    -d: 解壓縮,相當于uncompress    
    -c: 結果輸出至標準輸出,不刪除原文件    
    -v: 顯示詳情 
uncompress 解壓縮
zcat file.Z >file
     zcat:不顯式解壓縮的前提下查看文本文件內容

gzip/gunzip

gzip [OPTION]... FILE ...
    -d: 解壓縮,相當于gunzip
    -c: 將壓縮或解壓縮的結果輸出至標準輸出 
    -#: 1-9,指定壓縮比,值越大壓縮比越大
【實例】
    gzip -c messages >messages.gz 
    gzip -c -d messages.gz > messages 
    zcat messages.gz > messages

bzip2/bunzip2/bzcat

bzip2 [OPTION]... FILE ...
    -k: keep, 保留原文件
    -d: 解壓縮
    -#: 1-9,壓縮比,默認為6bzcat:不顯式解壓縮的前提下查看文本文件內容

xz/unxz/xzcat

xz [OPTION]... FILE ...
    -k: keep, 保留原文件
    -d: 解壓縮
    -#: 1-9,壓縮比,默認為6?xzcat: 不顯式解壓縮的前提下查看文本文件內容

zip/unzip

## 打包壓縮zip –r sysconfig sysconfig/
## 解包解壓縮
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/
(4) 結合壓縮工具實現:歸檔并壓縮 
        -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

練習

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

find /var \( -user root -group mail \) -ls

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

find /var -not \( -user root -o -user lp -o -user gdm \) -ls

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

find /var \( -mtime -7 -a -not \( -user root -o -user postfix \) \) -ls

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

find / \( -atime -7 -a \( -nouser -o -nogroup \) \) -ls

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

find /etc \( -size +1M -type f \) -ls

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

find /etc -not -perm /222 -ls

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

find /etc -not -perm -222 -ls

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

find /etc/init.d -perm -113 -ls

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

(0)
taobaibaitaobaibai
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • N26-第一周博客作業

    1.描述計算機的組成及其功能 完整的計算機系統由硬件和軟件兩部分組成。 現在大部分的計算機為馮諾依曼體系,主要有五個組成部分:運算器、控制器、存儲器、輸入設備、輸出設備,以下為詳細描述。(計算機的CPU由運算器、控制器和一二三層緩存等構成) 運算器:對數據進行算術運算和邏輯運算(對數據進行加工處理) 控制器:分析指令,控制協調輸入、輸出操作對內存的訪問。 存…

    Linux干貨 2017-01-02
  • Linux文本搜索工具grep

    Linux文本搜索工具grep Linux文本搜索工具grep grep 基本正則表達式 egrep 擴展正則表達式 fgrep 簡介 grep(全稱Globally search a Regular Expression and Print,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,根據用戶指定的“模式(pattern)”對目標文本進行匹…

    2016-04-05
  • awk學習筆記

    一、linux的文本處理器三劍客   文本過濾器:grep、egrep、fgrep   行編輯器:sed(模式空間;保持空間)   報表生成器:awk(格式化文本輸出)gawk awk的工作流程: 從文本中讀取一行內容,根據指定的分隔符;將讀入的一行內容分隔成字段,然后格式化輸出指定的字段 二、awk的命令相關的參數及用法 &n…

    Linux干貨 2015-06-23
  • rsyslog+mariadb+loganalyzer實現日志采集分析

    一、總述   Linux的日志記錄了用戶在系統上一切操作,這些日志是使用者了解服務器的情況最好的資料。Rsyslog 是系統的一部分,能夠實時的寫日志,并且還可以將日志選擇性的發送到遠程日志服務器。   rsyslog日志服務器的優勢:     1、日志統一,集中式管理     &nbsp…

    Linux干貨 2017-01-10
  • 磁盤管理的補充及擴展

    磁盤管理的補充及擴展 掛載點和/etc/fstab(配置文件) 使用mount命令掛載為臨時掛載開機重啟后就會自動卸載,為了永久掛載必須寫在配置文件中! 配置文件系統體系 ? 被mount、fsck和其它程序使用 ? 系統重啟時保留文件系統體系 ? 可以在設備欄使用文件系統卷標 ? 使用mount  -a 命令掛載/etc/fstab中的所有文件系…

    Linux干貨 2016-08-30
  • Python 課堂筆記

    第二天

    Linux干貨 2018-03-21

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 11:15

    文章層次結構清晰,對當天所學的知識總結的很詳細,find命令基本是筆試題中必考的知識點,希望下來能多加練習,熟練掌握。

欧美性久久久久