關于文件查找和解壓縮

                 文件查找和解壓縮
在文件系統上查找符合條件的文件,文件查找的工具有兩個,locate 和
find
文件查找分為:
            locate      非實時查找 (在數據庫查找)
           
updatedb   更新數據庫
            經常用于搜索穩定的文件,比如配置文件
           
var/lib/mlocate/mlocate.db 數據庫路徑
            find     實時查找

locate :
       查詢系統上預建的文件索引數據庫
      
/var/lib/mlocate/mlocate.db
      
依賴于實現構建的索引;索引的構建實在系統較為空閑時自動進行(周期性任務)
       管理員可以手動更新數據庫 updatedb
      
索引構建過程需要遍歷整個根文件系統,及其消耗資源
       工作特點:查找速度快
                
模糊查找
                 非實時精準查找
                
搜索的是文件的全路徑,不僅僅是文件名
                 可能只搜索用戶具備讀取和執行權限的目錄
locate 選項
關鍵字
locate -i AAA  執行時不區分大小寫的搜索
locate -n 2 aa 只列出前幾個的匹配項目
locate
makangbo 搜索名稱或路徑中帶有makangbo的文件
locate -r ‘\.bash$’ 使用正則表達式來搜索以 bash結尾的文件

 

 

find 實時查找工具,通過遍歷指定路徑完成文件查找;
特點:精確查找、精準查找、速度慢
、可能只搜索用戶具備讀取和執行權限的目錄
語法:find [選項] [查找路徑] [查找條件] [處理動作]
    
查找路徑:指定具體目路徑;默認為當前目錄
    
查找條件:指定的查找標準,可以文件名,大小,類型,權限等標準進行;默認為指定路徑下的所有文件
     處理動作:
對符合條件做操作,默認輸出至屏幕
查找條件:
        根據文件名和inode查找
        -name "file"   
支持使用正則表達式      ]# find -name makangbo  搜索名為makangbo 的文件
         * ? []
[^]                           ~]# find / -name "*.txt"  搜索根目錄以
*.txt為結尾前面是任意字符的文件
        -iname "file"   不區分字母的大小寫      ]# find -iname
MAkangbo 不去分大小寫的搜索名為makango 或者MAkangbo 等文件
        -inum inode    
按照inode號查找         ]# find -inum 5555    節點號文件搜索
        -samefile filename 
相同inode號的文件
        -links 鏈接數   鏈接數為多少的文件      ]# find -in -links 5 
鏈接數為6的文件
        -regex "表達式" 以表達式匹配整個文件路徑字符串,而不僅僅是文件名稱
        -user 
用戶名   根據文件的屬主查找
        -group 組名     根據文件的屬組查找
        -uid UID       
根據UID查找文件
        -gid GID        根據GID查找文件
        -nouser        
查找沒有屬主的文件
        -nogroup        查找沒有屬組的文件
        根據文件類型查找:
       
-]# find -user makangbo -type f   例如查找用戶之下的普通文件
         f 普通文件
         d
目錄文件
         l 符號鏈接文件
         s 套接字文件
         b 塊設備文件
         c
字符設備文件
         p 管道文件
組合條件查找:
         -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
!A -a !B=!(A -o B) 不是A 也不是 B
!A -O !B=!(A
-a B) 不是A 或者不是B
注意:括號需要轉義\(\)
德摩根定律:
非P 或 非Q = 非(P 且 Q)   前面兩個第一個不是P
或者不是Q,那就是不是的意思,同等與不是(P與Q)
非P 且 非Q = 非(P 或 Q)   前面兩個第一個不是P 并且不是Q
,那就是,兩個都是非的意思,同等與 不是(P或者Q)
              
         
 ~]# find /var
-name "*log*"  搜索/var目錄下以 log為關鍵字的搜索文件前后匹配任意字符
 ~]# find -user makangbo
-group makangbo  搜索 用戶makangbo 以及組群makangbo 所擁有的文件
  ]# find -user makangbo
-not -group makangbo   搜索用戶makangbo  組不是makangbo的文件
  ]# find -user makangbo
-o -user root   搜索用戶makangbo 或者 用戶root 的文件   滿足一個條件即可
  ]# find -not \( -user
makangbo -o -user root \)  搜索不是 和用戶makangbo 或者 用戶root 的文件
  ]# find / -user
makangbo -o -uid 500    搜索根目錄下 用戶makangbo 或者 uid 500 的文件
  ]# find /tmp \(
-not -user root -a -not -name "f*" \)  找出/tmp目錄下,用戶屬主不是root,且 文件名不是以f開頭的文件
 
]# find /tmp -not \( -user root -o -name "f*" \)   不是用戶root 或 不以f開頭的文件
 

 
 根據文件大小查找:
        ~]# find -size +10k
        
常用單位:k,m,g
       find -size  10k   表示9k到10k之間 (9k,10k)在原有的數字上面-1
      
find -size +10k   表示10k以上不包括10 無限大(10k,∞)
       find -size -10k   表示0k到9k
包括9k(0,9k)
 根據時間戳:
        以天為單位
        ~]# find -atime 5   

       find -atime 5    表示最近5天到6天 (5,6)在原有的數字上面+1
       find -atime +5  
表示5天以上,至無限大 (5,∞) 
       find -atime -5   表示0天到5天 (0-5)
      
-mtime
       -ctime
       以分鐘為單位
       -amin    
      
-mmin
       -cmin
       
 
根據權查找:
          -perm [/|-] 模式
精確的權限匹配
          ~]# find -perm 644
         
任何一類用戶的權限只要能包含對其指定的任何一位權限即可,或關系,+從7版本跟換為/ 表示或者    – 表示并且
         find -perm
755  會匹配權相模式正好是755的文件
         find -perm +222 匹配只要當任意用戶都有寫權限時
        
find -perm -222 表示每一位中的權限小于等于2就匹配
         find -perm -002
只有當其他人(other)有寫權限時,才會匹配
         find -perm -666 包括666 650 550 111 等,但不包括766

         find -perm +621 表示屬主有讀或者寫,或者屬組有寫,或者其他有執行權限的都可以
         -002
中的0表示不匹配屬主和屬組的權限,而不是說屬主和屬組沒有任何的權限   0表示不關注
處理動作:
         例如 find -perm
222  -print    
         跟搜索條件的后綴
         -print  默認的處理動作,顯示,打印到屏幕  ~]#
find  f1 -print -ls   默認輸出打印顯示,不加也一樣
         -ls     類似于對查找到的文件執行 ls -l 命令  
~]# find  f1 -ls
         -delete 刪除查找到的文件                         ~]# find 
f1 -delete 對查找到的文件直接刪除,不提示,擅用此命令
         -fls
/路徑文件/查找到的所有文件的長格式信息保存至指定文件中     ~]# find  f1 -fls /root/f1.log 
這時會生成一個f1.log的文件 ,就是查到的命令導入一個指定文件內   ;同等與重定向文件
         -ok 命令 {}\;  
對查找的每個文件執行由指定命令的命令              
                       
對于每個文件執行命令之前都會交互式的要求用戶確認
                        其中{}表示前面查找到的所有內容引用          
~]# find  f1 -ok rm {} \;   是否刪除引用前面的搜索內容
         -exec 命令 {}\;
對查找到的每個文件執行由命令指定的命令 ,不提示用戶執行   ~]# find  f1 -exec rm {} \;   直接執行
,不提示
         find 傳遞查找到的文件至后面指定的命令時,查找到所有的符合條件的文件一次性傳遞給后面的命令
        
有些名看客不能接受過多參數,此時命令執行可能會失敗,
         可以用這條命令規避此問題 : find | xargs
命令
 
         ~]# find  -name "*.sh" -exec cp {} {}.bak \;  

            將搜索.sh為結尾的文件進行備份,添加.bak 擴展名
        ~]# find /tmp -ctime +3
-user makangbo -ok rm {} \;
         
提示刪除存在時間超過3天以上的用戶makangbo的臨時文件
         ~]# find -perm -002 -exec chmod o-w
{} \;
          在家目錄中尋找可以被其他用戶寫入的文件
          ~]# find /home/ -type d
-ls
           搜索home下的
目錄文件
 
 
 練習
1、查找/var目錄下屬主為root,且屬組為mail的所有文件
   ~]# find /var
-user root -a -group mail

2、查找/var目錄下不屬于root、lp、gdm的所有文件
   ~]# find /var -not -user root -a -not
-user lp -a -not -user gdm
   ~]# find /var -not \( -user root -o -user lp -o
-user gdm \)

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是xiaomag的文件
     ~]# find /var -mtime
-7 -a -not -user root -a -user xiaomag
     ~]# find /var -mtime -7 -not \(
-user root -o -user xiaomag\)

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
     ~]# find / -atime -30 \( -nouser -o
-nogroup \)

5、查找/etc目錄下大于1M且類型為普通文件的所有文件
   ~]# find /etc -size +1M -type f
  
查找路徑, 根據大小查找大于1M,查找普通文件

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
 
 
 
 解壓縮 和歸檔工具
 早期有compress 和 uncompress
,對應的是.Z結尾的壓縮格式文件,
 gzip  和 gunzip  對應的是.gz 結尾的壓縮格式文件
 bizp2 和 bunzai2  
對應的是.bz結尾的壓縮格式文件
 xz    和 nuxz      對應的是.xz結尾的壓縮格式文件
 zip   和 unzip    
對應的.zip結尾的壓縮格式文件
 tar    歸檔
 cpio   打包
 
 
compress 和
uncompress
語法 compress 選項 文件
compress file 壓縮文件 不保留原始的文件
compress -d
file 解壓縮,同等于uncompress      
compress -c file 將壓縮或解壓縮的結果輸出值標準輸出,保留原始文件   ~]#
compress -c file > file.Z
compress -v file 顯示詳情
zcat file.Z >file 
解壓縮      后綴是Z
 
gzip 和 gunzip
語法 gzip 選項 文件
gzip -# file  #為數字
指明壓縮比;1-9,默認為6,數字越大,壓縮比越大 例如最大壓縮比:gzip -9 file
gzip -d file.gz  解壓縮文件
,同等與解壓縮的命令gunzip
gzip -c file  將壓縮或解壓縮的結果輸出值標準輸出,保留原始文件
例如 gzip -c file
> file.gz  重定向到文件,保留了原來的文件
gizp -r file  遞歸至目錄中對每個文件進行壓縮
zcat file.gz
>file  無須顯示解壓縮查看壓縮文件的內容  > 可以重定向文件
例如 gzip -c -d file.gz >
/目標路徑/file      壓縮文件后綴是gz
 
bzip2 和 bunzip2 /bzcat
語法 bzip2 選項
文件
bizp2 -# file  #為數字 指明壓縮比;1-9,默認為6,數字越大,壓縮比越大 例如最大壓縮比:bzip2 -9 file

bzip2 -k file 壓縮后保留原文件
bzip2 -d file 解壓縮,同等于 bunzip2     
壓縮文件后綴是bz2
bzcat /目標路徑/file.bz2  無須顯示解壓縮查看壓縮文件的內容  > 可以重定向文件
 
xz
/unxz /xzcat
語法 xz 選項 文件
xz -# file  #為數字 指明壓縮比;1-9,默認為6,數字越大,壓縮比越大
例如最大壓縮比:bzip2 -9 file
xz -k file  壓縮后保留原文件
xz -d file  解壓縮,同等于
bunzip2       壓縮文件后綴是xz
xzcat /目標路徑/file.xz  無須顯示解壓縮查看壓縮文件的內容  >
可以重定向文件
 
zip / unzip
打包壓縮
zip -r file路徑 源路徑
 命令選項 生成路徑 
源文件路徑    可以多個文件壓縮歸檔成單個文件    壓縮文件后綴是zip
解包解壓縮
unzip file

性能排行:xz ;bzip ; gzip  從高到底,但是經常用的是gzip

歸檔工具
歸檔就是將多個文件打包為單個文件以便于管理,默認的歸檔不會執行壓縮
常用的工具有 tar ; cpio
語法 tar
選項 file
創建歸檔tar
tar -c -f /PATH/TO/SOMEFILE.tar FILE  
tar cf
/PATH/TO/SOMEFILE.tar FILE
~]# tar -c -f /root/f2.tar f2   
歸檔文件f2到f2.tar中
  注意:歸檔不會刪除原文件

查看歸檔文件中的文件列表
~]# tar -t -f /root/f2.tar      查看f2.tar中的文件列表

展開歸檔
~]# tar -x -f /root/f2.tar  
~]# tar -x -f /root/f2.tar -C
/PATH/

結合壓縮工具實現:歸檔并壓縮
-z gzip
后綴名:.tar.gz
歸檔并壓縮:tar-zcf    ~]# tar -zcf
/root/f3.tar.gz f3
展開歸檔:tar -zxf     ~]# tar -zxf f3.tar.gz

-j bzip2
后綴名:.tar.bz2
歸檔并壓縮:tar -jcf   ~]# tar -jcf /root/f3.tar.bz2
f3
展開歸檔:tar -jxf     ~]# tar -jxf f3.tar.bz2

-J xz
后綴名:.tar.xz
歸檔并壓縮:tar -Jcf   ~]# tar -Jcf /root/f3.tar.xz
f3
展開歸檔:tar -Jxf     ~]# tar -Jxf f3.tar.xz

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

 

 

cpio 歸檔文件及從包中提取文件
cpio 命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,他可以解壓以.cpio 或者 .tar
結尾的文件
cpio 選項 > 文件名或者設備名
cpio 選項 < 文件名或者設備名
cpio -o        
將文件拷貝打包成文件或者將文件輸出到設備上
cpio -i         解包,將打包文件解壓或將設備上的備份還原到系統
cpio
-t         預覽,查看文件內容或者輸出到設備上的文件內容
cpio -v         顯示打包過程中的文件名稱
cpio
-d         解包生成目錄,在cpio還原時,自動建立的目錄
cpio -c         一種比較新的存儲方式

舉例
將etc 目錄備份
 ~]# find /etc -print | cpio -ov
>etc.cpio
搜索etc目錄下的文件打印輸出到設備  將文件拷貝打包過程中將文件輸出到設備 顯示文件名稱 重定向名稱

內容預覽
 ~]# cpio -tv <etc.cpio
 預覽輸出設備 
顯示過程中的文件名稱
 
 解包文件
 ~]# cpio -iv <etc.cpio
 ~]# cpio -idv
<etc.cpio

原創文章,作者:小馬哥,如若轉載,請注明出處:http://www.www58058.com/36980

(0)
小馬哥小馬哥
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • 谷歌三大核心技術(一)The Google File System中文版

    摘要 我們設計并實現了Google GFS文件系統,一個面向大規模數據密集型應用的、可伸縮的分布式文件系統。GFS雖然運行在廉價的普遍硬件設備上,但是它依然了提供災難冗余的能力,為大量客戶機提供了高性能的服務。 雖然GFS的設計目標與許多傳統的分布式文件系統有很多相同之處,但是,我們的設計還是以我們對自己的應用的負載情況和技術環境的分析為基礎的,不管現在還是…

    Linux干貨 2015-04-13
  • 優云Monitor:大規模Docker平臺自動化監控之路

    本文介紹了通過優云Monitor,如何實現大規模容器運維平臺的自動化監控需求。 盡管Docker技術目前還處于不穩定的發展與標準制定階段,但這門技術已經呈現了極其火熱的增長狀態,卻已經是不爭的實事。到底有多火熱?讓我們先來看一張來自國外監控公司DataDog 2016年最新調查報告: 從圖中可以看出,自2015年5月后,采用容器技術的應用呈現了30%的大幅增…

    2016-08-05
  • 網絡N23期第二周:linux上的目錄與文件管理命令,bash的工作特性等

    1、Linux上的目錄與文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 1.1 mkdir  創建目錄 使用方法:mkdir [OPTION]… DIRECTORY… 常用選項: -p:按需創建父目錄 -m:創建目錄權限 -v:輸出詳細創建目錄過程 實例: 創建/tmp/test2/test3目錄,定義權限為rwxrw-rw-,并詳細顯…

    Linux干貨 2016-10-09
  • Nginx代理MogileFS并實現負載均衡和高可用

    Nginx代理MogileFS并實現負載均衡和高可用 MogileFS nginx 負載均衡 前言 實驗拓撲 實驗環境 實驗步驟 配置MogileFS 配置Nginx 總結 前言 上篇文章我們了解分布式系統和MogileFS的基本使用, 但是那樣的架構是有問題的, 本篇文章我們來了解一下如何使用nginx-mogilefs-module-…

    大數據運維 2016-05-05
  • CentOS 6.5下編譯安裝httpd+mysql+php過程實錄

    一、安裝環境     Linux系統:CentOS 6.5     Apache版本:http-2.4.12     MySQL版本:MySQL 5.6.24     PHP版本:PHP-5.6.8 …

    Linux干貨 2015-05-18
  • 阿里云2G2C的ECS部署LNMP性能瓶頸到底在多少

    服務器詳細配置 Project message System info LSB Version:      :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch Distributor ID: CentOS Description: &n…

    Linux干貨 2015-04-16

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 14:55

    文章寫的很詳細,希望下來能多加練習,熟練掌握。

欧美性久久久久