文件查找與解壓縮

文件查找

腳本文件名的查詢

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 15:35
下一篇 2017-04-08 16:01

相關推薦

  • 實驗驗證Linux系統環境下路由的最長掩碼匹配原則

    實驗驗證Linux系統環境下路由的最長掩碼匹配原則 實驗環境拓撲如下 環境配置 HostA網卡配置 DEVICE=eth1 IPADDR=172.16.0.100 PREFIX=16 R1網卡配置 DEVICE=eth1 IPADDR=172.16.0.1 PREFIX=16 DEVICE=eth2 IPADDR=192.168.2.1 PREFIX=24 …

    2017-05-02
  • 初識shell腳本編程

    shell的編程三種分類方式介紹,如何使用nano命令編寫一個腳本命令,及腳本命令運行的2種方式。bash的配置文件及系統啟動時加載配置文件的順序流程

    2017-12-14
  • Linux基礎–命令幫助的獲取及history歷史命令

    第一部分    Linux系統如何獲取命令幫助     1、命令類型以及簡單幫助的獲取         linux系統上,基本命令分為兩類,一類是內建命令,一類是外部命令。所謂內建命令,是指由linux內核自帶的系統命令…

    Linux干貨 2016-07-28
  • Linux系統管理常用命令

    系統管理工具 進程的分類: CPU-Bound:CPU密集型,非交互。特別消耗CPU的,加密解密,壓縮解壓 IO-Bound:IO密集型,交互。大量的硬盤讀寫,例如復制文件 Linux系統狀態的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pki…

    Linux干貨 2017-12-18
  • Linux udev-ASM(基于oracle5.8)

    之前有客戶有在Linux下使用udev來做ASM,操作系統版本為oracle5.8,實際跟rhel5.8差不多,當時只是做了簡單記錄,現在整理下來,與大家一起分享。 1)需求信息 磁盤分區操作 –省略– 分區后,使用parted讓磁盤生效 需求: 將/dev/sdc1 <–>/dev/asm-disk1 將/d…

    Linux干貨 2016-07-29
  • yum軟件管理使用詳解

    yum介紹 yum客戶端的使用 配置文件項作說明: 案例repo配置文件。 創建yum源命令(yum-config-manager) yum list相關命令 yum安裝 yum更新和升級 yum查找和顯示 yum刪除程序 查看倉庫 實戰演練本地yum倉庫(光盤) YUM內置變量 創建YUM倉庫(http) yum介紹 yum命令是在Fedora和RedHa…

    Linux干貨 2016-09-06

評論列表(1條)

  • renjin
    renjin 2017-04-12 11:53

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

欧美性久久久久