文件查找與解壓縮

文件查找

腳本文件名的查詢

which(尋找執行文件)
  • which [-a] command
    -a :將所有由PATH目錄中可以找到的命令均列出,而不只是第一個被找到的命令名稱

文件名的查找

文件查找:
實時查找:遍歷所有文件進行條件匹配;(find)
非實時查找:根據索引查找;(whereis、locate)

whereis
  • whereis [-bmsu] [-BMS directory… -f] filename…
    -b :只找二進制格式的文件
    -m :只找在說明文件路徑下的文件
    -s:只找source源文件
    -u :查找不在上述三個選項當中的其他特殊文件
locate
  • locate [-ir] keyword
    -i:忽略大小寫的差異
    -r:后面可接正則表達式
    -n N 只列舉前N個匹配的項目

    locate -r “.*.sh”
    locate -n 10 passwd
    locate -i baoding

  • updatedb:根據/etc/updatedb.conf的設置去查找系統硬盤內的文件,并更新/var/lib/mlocate內的數據庫文件

    注:locate查找數據并非實時的,如果要查找一些比較新的內容,其實是會找不到;可以使用updatedb去更新mlocate.db
    /tmp/目錄下不適用

find

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

查找路徑:默認為當前路徑
查找條件:默認為指定路徑下的所有文件
處理動作:默認為顯示至屏幕

  • 查找條件

    • -name “文件名稱”:可使用通配符 : * 、?、 [] 、[^] 
      find . -name “????.log”
      -iname 文件名稱忽略大小寫
      find . -iname “baoding.log”
      -inum n 根據inode來查找 (基本不用)
      find . -inum 1179826
      -samefile name 查找相同inode號的文件,其實等于查找硬鏈接(基本不用)
      -links n 根據鏈接數
      find . -links 2
      -regex 使用正則表達式的方法匹配文件名
      find /etc/ -regex “.*\.sh$”
    • 根據文件的屬主和屬組查找:
      -user -group -uid -gid 
      -nouser 查找沒有屬主的文件或者目錄
      -nogroup 查找沒有屬組的文件或者目錄
      測試方法:新建一個ash用戶,然后把一個文件的屬主和屬組改成ash
      然后再刪除ash用戶
    • -type TYPE:根據文件類型查找
      f 普通文件 
      d 目錄
      l 鏈接文件
      s 套接字文件
      b 塊設備
      c 字符設備
      p 管道
    • 根據文件大小來查找

      • -size [+|-] # UNIT 
        #UNIT: #-1 < x <= # ;(#-1,#]
        -#UNIT: x <= #-1 ; (-∞,#-1]
        +# UNIT : x > # ; (#,+∞)
    • 根據時間戳查找

      • 以 “天” 為單位
        -atime [+|-] # 
        #: # <= x < #+1 ;[#,#+1)
        -: x < # ; (-∞,#)
        +#: x >= #+1 ; [#+1,+∞) 
        -mtime
        -ctime

      -mtime +7 7天以前的 從第8天開始
      -mtime 7 當前時間往前推第7天
      -mtime -7 當前時間往前推第7天以內
      –10–9–8      7——5—3–2—1
      mtime +7 | mtime 7| mtime -7    |

      • 以分鐘為單位 -amin -cmin(比較少用)
        -mmin +7 -7 7
    • 根據權限來查找

      • -perm [+|-] MODE
        MODE :與MODE精確匹配
        +MODE :任一類用戶的權限只能包含對其指定的任何一位權限即可;為‘或’關系;CentOS 6為+、CentOS 7為/
        -MODE :每類用戶指定的檢查權限都匹配,為三類用戶所有指定的檢查權限都能能夠被包含;為‘與’關系
        注:+020:中的0表示不匹配屬主和其他位的權限,而不是說屬主和其他位沒有任何權限
    • 組合條件:
      與:-a
      或:-o
      非:-not, !
      -not A -a -not B = -not (A -o B) :不是A也不是B
      -not A -o -not B = -not (A -a B) :不是A或者不是B

      示例:查找/etc/下面所有的目錄:

      查找目錄是 /etc/
      要求排除 /etc/sane.d
      查找.conf 文件
      find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name “
      .conf” -print 
      當查找到/etc/sane.d的時候 :前面的條件為真(’/etc/sane.d’ -a -prune) 
      或后面的條件就不會執行(-name “.conf”)
      當查找到其他目錄的時候 :前面的條件為假 (’/etc/sane.d’ -a -prune)
      或后面的會執行 (-name “
      .conf”)
      a && b || c
      a 和b 都為真的時候 則 a && b 為真,然后后面c就不會執行 
      a 或者b 有一個為假,則 a && b 為假,然后后面的c就會執行

  • 處理動作

    • -print 打印到屏幕上
      -ls 打印到屏幕上 類似于ls -l
      -delete 刪除操作 只刪除文件,不能刪除非空目錄
      -fls file 查找到的文件信息保存到指定的文本中
      -ok COMMAND在執行后面的動作之前會提示你是否需要執行(交互式的)
      -exec COMMAND {} \; 執行后面的命令 {} 表示前面find出的結果 \; 固定用法

生產經常使用方式:
1、刪除 find /logs/ -name “.log” -mtime +7 | xargs rm 監控告警 (磁盤告警)
find /logs/ -name “
.log” -size +20G | xargs rm 應用日志
2、備份   find /apps/data/ -name “” -exec cp {} /backup/ \;
3、查找  find /apps/ -name “
.log” | xargs grep -i “error” 日志里面找錯誤

文件解壓縮

  • 壓縮的作用:節省空間、節省帶寬
  • 壓縮工具:
    compress/uncompress,其對應的是.Z結尾的壓縮格式文件;
    gzip/gunzip,其對應的是.gz結尾的壓縮格式文件;
    bzip2/bunzip2,其對應的是.bz2結尾的壓縮格式文件;
    xz/unxz,其對應的是.xz結尾的壓縮格式文件;
    zip/unzip,其對應的是.zip結尾的壓縮格式文件;

compress/uncompress

  • 安裝: yum install ncompress 
    compress file :會生產file.Z壓縮文件,同時會刪除源文件
    compree -c file > file.Z :將壓縮結果輸出到標準屏幕上,可以一個(壓縮)文件,從而達到生產壓縮文件,同時保留源文件
    compress -d :解壓縮 .Z格式結尾的壓縮文件 === uncompress
    zcat file.Z 直接查看壓縮文件的內容不用先解壓縮

gzip/gunzip

gazip [OPTIONS] /PATH/TO/SOMEFILE…

  • -# 指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多;文件比較小的話,使用gzip越壓縮越大
    -d 解壓縮 == gunzip
    -c 將壓縮或者解壓縮結果輸出到屏幕 
    -r 遞歸至目錄中對每個文件進行壓縮

nginx gzip on 
gzipminlength 1k;超過多大的文件(1K)才會壓縮,否則,越壓縮越大;

zcat file.gz 直接查看壓縮文件的內容不用先解壓縮

bzip2/bunzip2

bzip2 [OPTIONS] /PATH/TO/SOMEFILE…

  • -#:指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多
    -d :解壓縮 == bunzip2
    -k :(keep)壓縮后保留源文件

zcat file.bz2 直接查看壓縮文件的內容不用先解壓縮

xz/unxz

xz [OPTIONS] /PATH/TO/SOMEFILE…

  • -#:指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多
    -d :解壓縮 == bunzip2
    -k :(keep)壓縮后保留源文件

zcat file.bz2 直接查看壓縮文件的內容不用先解壓縮

zip/unzip

zip ZIP_FILE.zip /PATH/TO/SOMEFILE…  打包壓縮(可以壓縮目錄)

  • -r 遞歸壓縮
    -p 將壓縮結果輸出屏幕上
    unzip 解壓縮:unzip ZIP_FILE.zip

歸檔工具

歸檔就是將多個文件打包為單個文件以便管理,默認的歸檔不會執行壓縮
常用的工具:tar、cpio

tar

tar [OPTION…] [FILE]…

  • tar 打包工具,將多個目錄打包成一個文件
    -c 打包 創建打包文件(歸檔);歸檔不會刪除源文件
    -f 指定打包的文件名;(-f filename 必須放在一起)
    -r 將文件追加至歸檔文件中
    -t 不解壓的情況下直接查看歸檔文件里面的內容 
    -x 執行解壓縮;(通常與 -v(顯示解壓縮過程) -f結合使用)
    -C 解壓到指定目錄下
    其他:
    -p 保留備份數據的原本權限與屬性,常用于備份(-c)重要的配置文件
    -P 打包的時候保留絕對路徑,即允許備份數據中含有根目錄存在
    –exclude=File 在壓縮過程中,排除File這個文件

  • 歸檔并壓縮

    • -j: bzip2
      tar -j -c -f xiongan3.tar.bz2 xiongan
      tar -jcf xiongan3.tar.bz2 xiongan
      tar jcf xiongan3.tar.bz2 xiongan (通常使用)

    • -z: gzip壓縮
      tar zcvf xiongxian.tar.gz xiongxian

    生產經常使用的gzip
    tar zcf xiongxian.tar.gz xiongxian 
    帶目錄:
    tar zcf xiongan.tar.gz xiongxian
    tar zcf xiongan.tar.gz xiongxian/* 
    不帶目錄: 
    cd xiongxian 
    tar zcf xiongan.tar.gz ./*

    tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
    /root/includefilelist 里面包含的是要壓縮的文件列表
    /root/excludefilelist 里面寫的是不要壓縮的文件列表

    • -J :xz 壓縮
      tar Jcvf xiongan5.tar.xz xiongan

注:展開歸檔可以直接使用tar -xf,而無需為其指定對應的壓縮工具選項;

cpio
  • -o 壓縮
    -i 解壓縮

find ./etc -print |cpio -ov >etc.cpio 
cpio –tv < etc.cpio
cpio –iv 
cpio –idv < etc.cpio

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

(0)
ss
上一篇 2017-04-08
下一篇 2017-04-08

相關推薦

  • N26-第六周作業

    vim編輯器的使用 編輯模式:默認模式編輯模式–>輸入模式;i:insert,在光標所在處輸入;a:append,在光標所在處后方輸入o:在光標所在處下方打開的一個新行;光標處在行首;I:在光標所在行的行首輸入A:在光標所在處的行尾輸入;O:在光標所在處的上方打開一個新行; 輸入模式–>編輯模式ESC 編輯模式&#8211…

    Linux干貨 2017-03-13
  • 文本處理三劍客之Gawk ?

        AWK可以說是一種語言,他有著自己的語法,可以實現函數定義,變量賦值,條件選擇(循環,判斷,選擇)…總之是值得深入研究一下的。     AWK的起源:是個報告生成器,可以格式化文本輸出內容,它的命名是由Aho,Weinberger,Kernighan三位作者首…

    Linux干貨 2016-09-21
  • 馬哥教育網絡班21期+第17周課程練習

    1、結合圖形描述LVS的工作原理; lvs是基于內核的虛擬主機用來做四層的負載均衡,工作在netfilter框架的INPUT鏈上,有四種模式,上圖為lvs-nat lvs-nat:有DNAT功能,支持端口映射,請求報文和響應報文都需要經過Director 請求過程:cip–>vip,Director,cip–>rip 響應…

    Linux干貨 2016-12-26
  • Linux網絡屬性配置的幾個命令

    Linux網絡屬性配置命令 ifcfg命令家族:ifconfig,route,netstat ifconfig命令:接口及地址查看和管理 ifconfig [INTERFACE] #ifconfig -a : 顯示所有接口,包括inactive狀態的接口 ifconfig interface [aftype] options | address … #i…

    Linux干貨 2017-05-09
  • 設計模式(六)橋連模式Bridge(結構型)

    1. 概述       在軟件系統中,某些類型由于自身的邏輯,它具有兩個或多個維度的變化,那么如何應對這種“多維度的變化”?如何利用面向對象的技術來使得該類型能夠輕松的沿著多個方向進行變化,而又不引入額外的復雜度? 例子1:設想如果要繪制矩形、圓形、橢圓、正方形,我們至少需要4個形狀類,但是如果繪制的圖形需要具有不同的…

    Linux干貨 2015-06-26
  • HTTP

    使用CentOS 7和CentOS 6實現以下任務 配置四個基于名稱的虛擬主機;discuzXwordpressdrupal1.在conf.d下新建并編輯虛擬主機配置文件]# cd /etc/httpd/conf.d/]# vim vhost.confcentos6配置   [root@ _93_ conf.d]#&n…

    Linux干貨 2016-10-12

評論列表(1條)

  • renjin
    renjin 2017-04-12 11:53

    你上周的三篇文章主要介紹了vim,find命令的詳細用法,包括grep與正則表達式方面的內容,基本把學過的內容都總結了出來了。寫的很詳細,第一篇與第二篇排版有些問題(需要注意文字段的縮進),文件查找與壓縮解壓縮這篇文章寫的還是非常不錯的,繼續努力就好。

欧美性久久久久