溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于文件查找和解壓縮

發(fā)布時(shí)間:2020-07-16 08:03:08 來(lái)源:網(wǎng)絡(luò) 閱讀:672 作者:銘人博軒 欄目:數(shù)據(jù)庫(kù)

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

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

 

 

find 實(shí)時(shí)查找工具,通過(guò)遍歷指定路徑完成文件查找;
特點(diǎn):精確查找、精準(zhǔn)查找、速度慢 、可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
語(yǔ)法:find [選項(xiàng)] [查找路徑] [查找條件] [處理動(dòng)作]
     查找路徑:指定具體目路徑;默認(rèn)為當(dāng)前目錄
     查找條件:指定的查找標(biāo)準(zhǔn),可以文件名,大小,類型,權(quán)限等標(biāo)準(zhǔn)進(jìn)行;默認(rèn)為指定路徑下的所有文件
     處理動(dòng)作: 對(duì)符合條件做操作,默認(rèn)輸出至屏幕
查找條件:
        根據(jù)文件名和inode查找
        -name "file"    支持使用正則表達(dá)式      ]# find -name makangbo  搜索名為makangbo 的文件
         * ? [] [^]                           ~]# find / -name "*.txt"  搜索根目錄以 *.txt為結(jié)尾前面是任意字符的文件
        -iname "file"   不區(qū)分字母的大小寫      ]# find -iname MAkangbo 不去分大小寫的搜索名為makango 或者M(jìn)Akangbo 等文件
        -inum inode     按照inode號(hào)查找         ]# find -inum 5555    節(jié)點(diǎn)號(hào)文件搜索
        -samefile filename  相同inode號(hào)的文件
        -links 鏈接數(shù)   鏈接數(shù)為多少的文件      ]# find -in -links 5  鏈接數(shù)為6的文件
        -regex "表達(dá)式" 以表達(dá)式匹配整個(gè)文件路徑字符串,而不僅僅是文件名稱
        -user  用戶名   根據(jù)文件的屬主查找
        -group 組名     根據(jù)文件的屬組查找
        -uid UID        根據(jù)UID查找文件
        -gid GID        根據(jù)GID查找文件
        -nouser         查找沒有屬主的文件
        -nogroup        查找沒有屬組的文件
        根據(jù)文件類型查找:
        -]# find -user makangbo -type f   例如查找用戶之下的普通文件
         f 普通文件
         d 目錄文件
         l 符號(hào)鏈接文件
         s 套接字文件
         b 塊設(shè)備文件
         c 字符設(shè)備文件
         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
注意:括號(hào)需要轉(zhuǎn)義\(\)
德摩根定律:
非P 或 非Q = 非(P 且 Q)   前面兩個(gè)第一個(gè)不是P 或者不是Q,那就是不是的意思,同等與不是(P與Q)
非P 且 非Q = 非(P 或 Q)   前面兩個(gè)第一個(gè)不是P 并且不是Q ,那就是,兩個(gè)都是非的意思,同等與 不是(P或者Q)
              
         
 ~]# find /var -name "*log*"  搜索/var目錄下以 log為關(guān)鍵字的搜索文件前后匹配任意字符
 ~]# find -user makangbo -group makangbo  搜索 用戶makangbo 以及組群makangbo 所擁有的文件
  ]# find -user makangbo -not -group makangbo   搜索用戶makangbo  組不是makangbo的文件
  ]# find -user makangbo -o -user root   搜索用戶makangbo 或者 用戶root 的文件   滿足一個(gè)條件即可
  ]# 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開頭的文件
 
 
 根據(jù)文件大小查找:
        ~]# find -size +10k
         常用單位:k,m,g
       find -size  10k   表示9k到10k之間 (9k,10k)在原有的數(shù)字上面-1
       find -size +10k   表示10k以上不包括10 無(wú)限大(10k,∞)
       find -size -10k   表示0k到9k 包括9k(0,9k)
 根據(jù)時(shí)間戳:
        以天為單位
        ~]# find -atime 5   
       find -atime 5    表示最近5天到6天 (5,6)在原有的數(shù)字上面+1
       find -atime +5   表示5天以上,至無(wú)限大 (5,∞) 
       find -atime -5   表示0天到5天 (0-5)
       -mtime
       -ctime
       以分鐘為單位
       -amin    
       -mmin
       -cmin
       
 
根據(jù)權(quán)查找:
          -perm [/|-] 模式 精確的權(quán)限匹配
          ~]# find -perm 644
          任何一類用戶的權(quán)限只要能包含對(duì)其指定的任何一位權(quán)限即可,或關(guān)系,+從7版本跟換為/ 表示或者    - 表示并且
         find -perm 755  會(huì)匹配權(quán)相模式正好是755的文件
         find -perm +222 匹配只要當(dāng)任意用戶都有寫權(quán)限時(shí)
         find -perm -222 表示每一位中的權(quán)限小于等于2就匹配
         find -perm -002 只有當(dāng)其他人(other)有寫權(quán)限時(shí),才會(huì)匹配
         find -perm -666 包括666 650 550 111 等,但不包括766 等
         find -perm +621 表示屬主有讀或者寫,或者屬組有寫,或者其他有執(zhí)行權(quán)限的都可以
         -002 中的0表示不匹配屬主和屬組的權(quán)限,而不是說(shuō)屬主和屬組沒有任何的權(quán)限   0表示不關(guān)注
處理動(dòng)作:
         例如 find -perm 222  -print    
         跟搜索條件的后綴
         -print  默認(rèn)的處理動(dòng)作,顯示,打印到屏幕  ~]# find  f1 -print -ls   默認(rèn)輸出打印顯示,不加也一樣
         -ls     類似于對(duì)查找到的文件執(zhí)行 ls -l 命令   ~]# find  f1 -ls
         -delete 刪除查找到的文件                         ~]# find  f1 -delete 對(duì)查找到的文件直接刪除,不提示,擅用此命令
         -fls /路徑文件/查找到的所有文件的長(zhǎng)格式信息保存至指定文件中     ~]# find  f1 -fls /root/f1.log  這時(shí)會(huì)生成一個(gè)f1.log的文件 ,就是查到的命令導(dǎo)入一個(gè)指定文件內(nèi)   ;同等與重定向文件
         -ok 命令 {}\;   對(duì)查找的每個(gè)文件執(zhí)行由指定命令的命令              
                        對(duì)于每個(gè)文件執(zhí)行命令之前都會(huì)交互式的要求用戶確認(rèn)
                        其中{}表示前面查找到的所有內(nèi)容引用           ~]# find  f1 -ok rm {} \;   是否刪除引用前面的搜索內(nèi)容
         -exec 命令 {}\; 對(duì)查找到的每個(gè)文件執(zhí)行由命令指定的命令 ,不提示用戶執(zhí)行   ~]# find  f1 -exec rm {} \;   直接執(zhí)行 ,不提示
         find 傳遞查找到的文件至后面指定的命令時(shí),查找到所有的符合條件的文件一次性傳遞給后面的命令
         有些名看客不能接受過(guò)多參數(shù),此時(shí)命令執(zhí)行可能會(huì)失敗,
         可以用這條命令規(guī)避此問(wèn)題 : find | xargs 命令
 
         ~]# find  -name "*.sh" -exec cp {} {}.bak \;  
            將搜索.sh為結(jié)尾的文件進(jìn)行備份,添加.bak 擴(kuò)展名
        ~]# find /tmp -ctime +3 -user makangbo -ok rm {} \;
          提示刪除存在時(shí)間超過(guò)3天以上的用戶makangbo的臨時(shí)文件
         ~]# find -perm -002 -exec chmod o-w {} \;
          在家目錄中尋找可以被其他用戶寫入的文件
          ~]# find /home/ -type d -ls
           搜索home下的 目錄文件
 
 
 練習(xí)
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目錄下最近一周內(nèi)其內(nèi)容修改過(guò),同時(shí)屬主不為root,也不是xiaomag的文件
     ~]# find /var -mtime -7 -a -not -user root -a -user xiaomag
     ~]# find /var -mtime -7 -not \( -user root -o -user xiaomag\)

4、查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M,且最近一個(gè)周內(nèi)曾被訪問(wèn)過(guò)的文件
     ~]# find / -atime -30 \( -nouser -o -nogroup \)

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

6、查找/etc目錄下所有用戶都沒有寫權(quán)限的文件
   ~]# find /etc -not -perm +222 -ls

7、查找/etc目錄下至少有一類用戶沒有執(zhí)行權(quán)限的文件
  ~]# find /etc -not -perm -222 -ls

8、查找/etc/init.d目錄下,所有用戶都有執(zhí)行權(quán)限,且其它用戶有寫權(quán)限的文件
  ~]# find /etc/init.d/ -perm -113
 
 
 
 解壓縮 和歸檔工具
 早期有compress 和 uncompress ,對(duì)應(yīng)的是.Z結(jié)尾的壓縮格式文件,
 gzip  和 gunzip  對(duì)應(yīng)的是.gz 結(jié)尾的壓縮格式文件
 bizp2 和 bunzai2   對(duì)應(yīng)的是.bz結(jié)尾的壓縮格式文件
 xz    和 nuxz      對(duì)應(yīng)的是.xz結(jié)尾的壓縮格式文件
 zip   和 unzip     對(duì)應(yīng)的.zip結(jié)尾的壓縮格式文件
 tar    歸檔
 cpio   打包
 
 
compress 和 uncompress
語(yǔ)法 compress 選項(xiàng) 文件
compress file 壓縮文件 不保留原始的文件
compress -d file 解壓縮,同等于uncompress      
compress -c file 將壓縮或解壓縮的結(jié)果輸出值標(biāo)準(zhǔn)輸出,保留原始文件   ~]# compress -c file > file.Z
compress -v file 顯示詳情
zcat file.Z >file  解壓縮      后綴是Z
 
gzip 和 gunzip
語(yǔ)法 gzip 選項(xiàng) 文件
gzip -# file  #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:gzip -9 file
gzip -d file.gz  解壓縮文件 ,同等與解壓縮的命令gunzip
gzip -c file  將壓縮或解壓縮的結(jié)果輸出值標(biāo)準(zhǔn)輸出,保留原始文件
例如 gzip -c file > file.gz  重定向到文件,保留了原來(lái)的文件
gizp -r file  遞歸至目錄中對(duì)每個(gè)文件進(jìn)行壓縮
zcat file.gz >file  無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容  > 可以重定向文件
例如 gzip -c -d file.gz > /目標(biāo)路徑/file      壓縮文件后綴是gz
 
bzip2 和 bunzip2 /bzcat
語(yǔ)法 bzip2 選項(xiàng) 文件
bizp2 -# file  #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:bzip2 -9 file
bzip2 -k file 壓縮后保留原文件
bzip2 -d file 解壓縮,同等于 bunzip2      壓縮文件后綴是bz2
bzcat /目標(biāo)路徑/file.bz2  無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容  > 可以重定向文件
 
xz /unxz /xzcat
語(yǔ)法 xz 選項(xiàng) 文件
xz -# file  #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:bzip2 -9 file
xz -k file  壓縮后保留原文件
xz -d file  解壓縮,同等于 bunzip2       壓縮文件后綴是xz
xzcat /目標(biāo)路徑/file.xz  無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容  > 可以重定向文件
 
zip / unzip
打包壓縮
zip -r file路徑 源路徑
 命令選項(xiàng) 生成路徑  源文件路徑    可以多個(gè)文件壓縮歸檔成單個(gè)文件    壓縮文件后綴是zip
解包解壓縮
unzip file

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


歸檔工具
歸檔就是將多個(gè)文件打包為單個(gè)文件以便于管理,默認(rèn)的歸檔不會(huì)執(zhí)行壓縮
常用的工具有 tar ; cpio
語(yǔ)法 tar 選項(xiàng) file
創(chuàng)建歸檔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中
  注意:歸檔不會(huì)刪除原文件

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

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

結(jié)合壓縮工具實(shí)現(xiàn):歸檔并壓縮
-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 而無(wú)視指定對(duì)應(yīng)的壓縮工具選項(xiàng)

 

 

cpio 歸檔文件及從包中提取文件
cpio 命令是通過(guò)重定向的方式將文件進(jìn)行打包備份,還原恢復(fù)的工具,他可以解壓以.cpio 或者 .tar 結(jié)尾的文件
cpio 選項(xiàng) > 文件名或者設(shè)備名
cpio 選項(xiàng) < 文件名或者設(shè)備名
cpio -o         將文件拷貝打包成文件或者將文件輸出到設(shè)備上
cpio -i         解包,將打包文件解壓或?qū)⒃O(shè)備上的備份還原到系統(tǒng)
cpio -t         預(yù)覽,查看文件內(nèi)容或者輸出到設(shè)備上的文件內(nèi)容
cpio -v         顯示打包過(guò)程中的文件名稱
cpio -d         解包生成目錄,在cpio還原時(shí),自動(dòng)建立的目錄
cpio -c         一種比較新的存儲(chǔ)方式

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

內(nèi)容預(yù)覽
 ~]# cpio -tv <etc.cpio
 預(yù)覽輸出設(shè)備  顯示過(guò)程中的文件名稱
 
 解包文件
 ~]# cpio -iv <etc.cpio
 ~]# cpio -idv <etc.cpio

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI