學習啦 > 學習電腦 > 操作系統(tǒng) > Linux教程 > Linux中的文件查找和解壓縮教程

Linux中的文件查找和解壓縮教程

時間: 志藝942 分享

Linux中的文件查找和解壓縮教程

  文章將主要介紹在Linux中怎樣查找文件和解壓縮。需要我們掌握的知識有: locate 和 find 命令的使用,以及如何使用壓縮和解壓縮工具。接下來是小編為大家收集的Linux中的文件查找和解壓縮教程,歡迎大家閱讀:

  Linux中的文件查找和解壓縮教程

  一、Linux文件查找

  在文件系統(tǒng)上常常需要根據(jù)文件的各種屬性去查找符合條件的文件,此前使用的grep,egrep,fgrep屬于文本過濾、文本搜索工具;而文件查找工具有兩個,locate和find

  1.文件查找分為兩類:

  □ 實時查找 :偏歷所有文件進行條件匹配 find

  □ 非實時查找(數(shù)據(jù)庫查找) :根據(jù)索引查找 locate

  2. locate

  □ 查詢系統(tǒng)上預建的文件索引數(shù)據(jù)庫

  /var/lib/mlocate/mlocate.db

  依賴于事先構(gòu)建的索引

  索引的構(gòu)建是在系統(tǒng)較為空閑時自動進行(周期性任務),管理員 手動更新數(shù)據(jù)庫使用 updatedb 命令

  索引構(gòu)建過程需要遍歷整個根文件系統(tǒng),極消耗資源

  工作特點:

  查找速度快

  模糊查找

  非實時查找

  搜索的是文件的全路徑,不僅僅是文件名

  可能只搜索用戶具備讀取和執(zhí)行權限的目錄

  □ locate KEYWORD

  有用的選項

  -i執(zhí)行區(qū)分大小寫的搜索

  -n N只列舉前N個匹配項目

  示例:

  locate foo 搜索名稱或路徑中帶有“foo”的文件

  locate -r ‘\.foo$ 使用Regex來搜索以“.foo”結(jié)尾的文件

  二、 find

  1 . 實時查找工具,通過遍歷指定路徑完成文件查找 ;

  工作特點:

  查找速度略慢

  精確查找

  實時查找

  可能只搜索用戶具備讀取和執(zhí)行權限的目錄

  2. 語法:

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

  查找路徑:指定具體目標路徑;默認為當前目錄

  查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件

  處理動作:對符合條件的文件做操作,默認輸出至屏幕

  3.查找條件:

  □ 根據(jù)文件名和inode查找:

  -name "文件名稱":支持使用glob *, ?, [], [^] 文件名稱一定加引號!

  -iname "文件名稱":不區(qū)分字母大小寫

  -inumn 按inode號查找

  -samefilename 相同inode號的文件

  -links n 鏈接數(shù)為n的文件

  -regex "PATTERN" :以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

  □ 根據(jù)屬主、屬組查找 :

  -user USERNAME:查找屬主為指定用戶(UID)的文件

  -group GRPNAME: 查找屬組為指定組(GID)的文件

  -uid UID:查找屬主為指定的UID號的文件

  -gid GID:查找屬組為指定的GID號的文件

  -nouser :查找沒有屬主的文件

  -nogroup :查找沒有屬組的文件

  □ 根據(jù)文件類型查找:

  -type TYPE: 如: find /etc/ -type f

  f: 普通文件

  d: 目錄文件

  l: 符號鏈接文件

  s:套接字文件

  b: 塊設備文件

  c: 字符設備文件

  p: 管道文件

  □ 組合條件 :

  與:-a

  或:-o

  非:-not, !

  德·摩根定律 :

  (非P) 或(非Q)= 非(P 且Q)

  (非P) 且(非Q) = 非(P 或Q)

  示例:

  !A -a !B = !(A -o B)

  !A -o !B = !(A -a B)

  find示例:

  find -name snow.png 搜索名為snow.png的文件

  find -iname snow.png 不分大小寫地搜索名為snow.png、Snow.png、SNOW.PNG等等的文件

  find / -name “*.txt” 搜索根目錄下所有以.txt結(jié)尾的文件

  find /var –name “*log*”

  find -userjoe -group joe 搜索被用戶joe 以及組群joe所擁有的文件

  找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件

  find /tmp \( -not -user root -a -not -name 'f*' \) -ls

  find /tmp -not \( -user root -o -name 'f*' \) –ls

  排除目錄

  示例:查找/etc/下,除/etc/sane.d目錄的其它所有.conf后綴的文件

  find /etc -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print

  □ 根據(jù)文件大小來查找:

  -size [+|-] #UNIT 如:find /etc/ -size 6k

  常用單位:k, M, G

  注意:這里這里的區(qū)間,包含和不包含的關系。

  #UNIT: (#-1, #] 如:6k 表示(5k,6k]

  -#UNIT:[0,#-1] 如:-6k 表示[0,5k]

  +#UNIT:(#,∞) 如:+6k 表示(6k,∞)

  □根據(jù)時間戳:

  以“天”為單位; 如: find /etc/ -atime 7

  -atime [+|-]#,

  #: [#,#+1) 如:7 表示[7,8)

  +#: [#+1,∞] 如: +7 表示 [8,∞)

  -#: [0,#) 如: -7 表示 [0,7)

  -mtime

  -ctime

  以“分鐘”為單位:

  -amin

  -mmin

  -cmin

  根據(jù)權限查找 :

  -perm [/|-] MODE

  MODE: 精確權限匹配

  /MODE:任何一類(u,g,o)對象的權限中 只要能一位匹配 即可, 或關系 ,+ 從centos7開始淘汰

  -MODE:每一類對象都必須 同時擁有 指定權限, 與關系

  0 表示不關注

  示例:

  find -perm 755會匹配權限模式恰好是755的文件

  只要當任意人有寫權限時,find -perm +222就會匹配

  只有當每個人都有寫權限時,find -perm -222才會匹配

  只有當其它人(other)有寫權限時,find -perm -002才會匹配

  4.處理動作

  -print:默認的處理動作,顯示至屏幕;

  -ls: 類似于對查找到的文件執(zhí)行“ls -l”命令

  -delete:刪除查找到的文件;(不建議使用)

  -fls file:查找到的所有文件的 長格式信息 保存至指定文件中(相當于重定向)

  -ok COMMAND {} \;(固定格式) 對查找到的每個文件執(zhí)行由COMMAND指定的命令;

  對于每個文件執(zhí)行命令之前,都會交互式要求用戶確認(-exec 不用確認,直接操作)

  -exec COMMAND {} \ ; 對查找到的每個文件執(zhí)行由COMMAND指定的命令

  {} : 用于引用查找到的文件名稱自身

  find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

  有些命令不能接受過多參數(shù),此時命令執(zhí)行可能會失敗,下面方式可規(guī)避此問題

  find | xargs COMMAND

  示例:

  find -name “*.conf” -exec cp {} {}.org \; (一定要注意格式,后面加斜杠和分號)

  備份配置文件,添加.orig這個擴展名

  find /tmp -ctime +3 -userjoe -ok rm {} \;

  提示刪除存在時間超過3天以上的joe的臨時文件

  find ~ -perm -002 -exec chmod o-w {} \;

  在你的主目錄中尋找可被其它用戶寫入的文件

  find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

  找到/data 目錄下所有文件名以.sh后綴,且權限為644的普通文件,然后把權限改為755

  find /home –type d -ls

  Linux系統(tǒng)解壓縮

  概述

  本章將介紹Linux系統(tǒng)中的壓縮和解壓縮的工具,以及歸檔工具(tar,cpio)

  compress/uncompress: 對應 .Z 結(jié)尾的壓縮格式文件;

  gzip/gunzip: 其對應的是 .gz 結(jié)尾的壓縮格式文件;

  bzip2/bunzip2: 其對應的是 .bz2 結(jié)尾的壓縮格式文件;

  xz/unxz: 其對應的是 .xz 結(jié)尾的壓縮格式文件;

  zip/unzip 其對應的是 .zip 結(jié)尾的壓縮格式文件

  一、 compress和uncompress

  □語法: compress [-dfvcVr] [-b maxbits] [file …]

  -d : 解壓縮,相當于 (可以配合 -c 保留壓縮文件)

  -c : 結(jié)果輸出至標準輸出,不刪除原文件

  -v : 顯示詳情

  uncompress解壓縮

  zcat file.Z > file

  二、 gzip和gunzip(使用最多)

  □語法: gzip[OPTION]… FILE …

  -d: 解壓縮,相當于gunzip

  -c: 將壓縮或解壓縮的結(jié)果輸出至標準輸出

  -#:1-9,指定壓縮比,值越大壓縮比越大 如:gzip -9 m

  zcat:不顯式解壓縮的前提下查看文本文件內(nèi)容

  實例:

  gzip -c messages > messages.gz

  gzip -c -d messages.gz > messages

  zcatmessages.gz > messages

  三、 bzip2/bunzip2/bzcat

  □ 語法 : bzip2 [OPTION]… FILE …

  -k : keep, 保留原文件

  -d : 解壓縮

  -#:1-9,壓縮比,默認為6

  bzcat:不顯式解壓縮的前提下查看文本文件內(nèi)容

  四、 xz/unxz/zxcat(壓縮比最強)

  □語法: xz[OPTION]… FILE …

  -k : keep, 保留原文件

  -d:解壓縮

  -#:1-9,壓縮比,默認為6

  xzcat: 不顯式解壓縮的前提下查看文本文件內(nèi)容

  五、zip/unzip

  語法:zip zipfile.zip /path/to/somefile

  □ 打包壓縮

  zip –r sysconfigsysconfig/

  解包解壓縮

  unzip sysconfig.zip (解壓到當前目錄中)

  cat /var/log/messages | zip message -(代表前面命令的標準輸出)

  unzip -p message > message

  六、tar

  □語法: tar [OPTION]…

  (1) 創(chuàng)建歸檔

  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/

  結(jié)合壓縮工具實現(xiàn):歸檔并壓縮

  -j: bzip2, -z: gzip, -J: xz

  七、cpio

  復制從或到文件

  cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以“.cpio”或者“.tar”結(jié)尾的文件。

  cpio[選項] > 文件名或者設備名

  cpio[選項] < 文件名或者設備名

  選項

  -o 將文件拷貝打包成文件或者將文件輸出到設備上

  -i解包,將打包文件解壓或?qū)⒃O備上的備份還原到系統(tǒng)

  -t 預覽,查看文件內(nèi)容或者輸出到設備上的文件內(nèi)容

  -v 顯示打包過程中的文件名稱。

  -d 解包生成目錄,在cpio還原時,自動的建立目錄

  -c 一種較新的存儲方式

  示例:

  將etc目錄備份:

  find ./etc-print |cpio-ov>etc.cpio

  內(nèi)容預覽

  cpio–tv< etc.cpio

  要解包文件

  cpio–iv

  cpio–idv< etc.cpio

  
看了“Linux中的文件查找和解壓縮教程”還想看:

1.linux怎么使用壓縮及解壓縮命令

2.linux下find(文件查找)命令的用法總結(jié)

3.Linux中使用grep命令搜索文件名方法

4.LINUX gzip和gunzip的解壓參數(shù)

3087305