20170729 文件查找和壓縮

一钉答、文件非實時查找 locate

  • locate查詢系統(tǒng)預建文件索引數(shù)據(jù)庫/var/lib/mlocate/mlocate.db,所以查詢速度很快
  • 由于數(shù)據(jù)庫不能實時更新文件變動娱据,所以locate可能查詢不到新建立、修改的文件
  • 文件索引構(gòu)建更新為周期任務,文件遍歷過程非常消耗系統(tǒng)資源宝磨,一般在系統(tǒng)空閑時進行疮绷,手動更新使用命令updatedb
  • 屬于模糊查找翰舌,查找結(jié)果是文件的全路徑,可能只能搜索到用戶具有讀取和可執(zhí)行權限的目錄
  • 語法:locate [option] keyword
  • 選項:
-i           //不區(qū)分大小寫搜索
-n #         //只顯示前#行匹配結(jié)果
-r regex     //搜索符合正則表達式描述的文件

二冬骚、文件實時查找 find

通過遍歷指定目錄實時查找文件椅贱,屬于精確查找懂算,所以速度較慢,同樣可能只能搜索到用戶具有讀取和可執(zhí)行權限的目錄

(一)語法:

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

  • 查找路徑:指定具體目標路徑庇麦;默認為當前目錄
  • 查找條件:指定查找標準计技,可以文件名、大小山橄、類型垮媒、權限等標準進行;默認為找出指定路徑下的所有文件
  • 處理動作:對符合條件的文件做操作航棱,默認輸出至屏幕

(二)查找條件詳述

  • 指定搜索層級
-maxdepthlevel     //最大搜索目錄深度睡雇,指定目錄為第1級
-mindepthlevel     //最小搜索目錄深度
  • 根據(jù)文件名和inode查找
-name              //文件名稱:支持使用glob
-iname             //文件名稱:不區(qū)分字母大小寫
-inum n            //按inode號查找
-samefile name     //相同inode號的文件
-links n           //鏈接數(shù)為n的文件
-regex "PATTERN"   //以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
  • 根據(jù)屬主饮醇、屬組查找
-user USERNAME     //查找屬主為指定用戶(UID)的文件
-group GRPNAME     //查找屬組為指定組(GID)的文件
-uid UserID        //查找屬主為指定的UID號的文件
-gid GroupID       //查找屬組為指定的GID號的文件
-nouser            //查找沒有屬主的文件
-nogroup           //查找沒有屬組的文件
  • 根據(jù)文件類型查找
-type f     //普通文件
-type d     //目錄文件
-type l     //符號鏈接文件
-type b     //塊設備文件
-type c     //字符設備文件
  • 組合條件

    • 并且 -a
    • 或者 -o
    • 非 它抱!, -not
    • 德摩根定律
      !A -o !B = ! (A -a B)
      驳阎!A -a !B = ! (A -o B)
    • 三種條件的判斷先后:“非”優(yōu)先級最高抗愁,“并且”次之,“或者”最低呵晚,當不按照此順序判斷時需要增加括號\(\)蜘腌,注意轉(zhuǎn)義字符
  • -purne 排除目錄

  • 實驗:

  • 根據(jù)文件大小來查找
    語法:-size [+|-]#UNIT, UNIT: k, M, G
    #UNIT: (#-1, #] UNIT,如-size 6M表達的范圍為(5, 6]M
    -#UNIT: [0, #-1] UNIT饵隙,如-size -6M表達的范圍為[0, 5]M
    +#UNIT: (#, ∞) UNIT撮珠,如-size +6M表達的范圍為(6, ∞)M

    • 實驗:查找/etc目錄下大小大于1M的普通文件
  • 根據(jù)時間戳查找
    語法:

    • 以天為單位
      -atime [+|-]#
      -mtime [+|-]#
      -ctime [+|-]#
    • 以分鐘為單位
      -amin [+|-]#
      -mmin [+|-]#
      -cmin [+|-]#
    • 范圍的意義
      #: [#,#+1)
      +#: [#+1,∞]
      -#: [0,#)
  • 根據(jù)權限查找

    • 語法:--perm [/|-] MODE
      MODE 精確匹配權限
      / MODE 只要u,g,o至少一方的權限與MODE聲明匹配,即權限或關系
      -MODE 必須u,g,o都具有MODE聲明權限金矛,即權限與的關系
    • 注意:當使用/或者-時芯急,當MODE聲明中存在0,即表明對此位置的權限設置不關注
    • 實驗:
      1驶俊、/app目錄下有10個文件file1至file10娶耍,每個文件的權限如下:

      2、執(zhí)行命令find /app -perm 766饼酿,代表按照命令的權限要求精確搜索榕酒,結(jié)果如下:

      3、執(zhí)行命令find /app -perm /111故俐,代表只要文件的屬主想鹰、屬組、其他人中至少一方有可執(zhí)行權限即匹配搜索條件药版,結(jié)果如下:

      4辑舷、執(zhí)行命令find /app -perm -424,代表只有文件屬主有讀權限槽片、屬組有寫權限何缓、其他人有讀權限三個條件同時匹配才能被搜索到肢础,結(jié)果如下:

      5、執(zhí)行命令find /app -perm -402歌殃,代表只有文件屬主有讀權限乔妈、其他人有寫權限兩個條件同時匹配才能被搜索到,而屬組的權限設置搜索過程不關心氓皱,結(jié)果如下:

(三)處理動作

  • -print 默認動作路召,搜索結(jié)果輸出至屏幕
  • -ls 對搜索結(jié)果執(zhí)行ls -l命令后的結(jié)果
  • -delete 刪除查找到的文件
  • -fls file 將搜索結(jié)果的長格式信息保存至文件file
  • -ok COMMAND {} \; 對搜索結(jié)果執(zhí)行COMMAND命令,每個搜索文件執(zhí)行COMMAND命令前有交互式確認波材,大括號指代搜索結(jié)果股淡,命令結(jié)尾必須用\;結(jié)束
  • -exec COMMAND {} \;對搜索結(jié)果執(zhí)行COMMAND命令,命令直接執(zhí)行沒有提示廷区,語法類似-ok
  • 實驗:將/app目錄下其他人擁有寫權限的文件名稱增加后綴.bak


(四)參數(shù)替換 xargs

  • xargs用于產(chǎn)生某個命令的參數(shù)唯灵,xargs可以讀入stdin的數(shù)據(jù),并且以空格符或回車符將stdin的數(shù)據(jù)分隔成為arguments
  • 有些命令不能接受過多參數(shù)隙轻,使用xargs可以突破命令的參數(shù)數(shù)量限制
  • find與xargs命令結(jié)合使用:find | xargs command
  • 實驗:將/sbin目錄下屬主擁有讀埠帕、寫、可執(zhí)行權限的文件列表用ls -l命令顯示出來

三玖绿、壓縮敛瓷、解壓縮和歸檔工具

(一)compress/uncompress

  • compress 壓縮,生成.Z后綴壓縮文件斑匪,程序?qū)缶Y名敏感
    -d 解壓縮呐籽,相當于uncompress
    -c 結(jié)果輸出至標準輸出,可使用重定向在壓縮/解壓縮時保留源文件
    -v 顯示過程
  • uncompress 解壓縮蚀瘸,程序?qū)缶Y名敏感
  • zcat 解壓縮結(jié)果輸出至標準輸出狡蝶,可視作uncompress -c
  • 實驗:


(二)gzip/gunzip

  • gzip 壓縮,生成.gz后綴壓縮文件贮勃,程序?qū)缶Y名敏感
    -d 解壓縮贪惹,相當于gunzip
    -c 結(jié)果輸出至標準輸出,可使用重定向在壓縮/解壓縮時保留源文件
    -# 指定壓縮比1-9寂嘉,值越大壓縮比越高奏瞬,默認為6
  • gunzip 解壓縮,程序?qū)缶Y名敏感
  • zcat 解壓縮結(jié)果輸出至標準輸出垫释,可視作gunzip -c
  • 實驗:


(三)bzip2/bunzip2

  • bzip2 壓縮丝格,生成.bz2后綴壓縮文件撑瞧,程序?qū)缶Y名敏感
    -d 解壓縮棵譬,相當于bunzip2
    -k 保留源文件
    -# 指定壓縮比1-9,值越大壓縮比越高预伺,默認為9
  • bunzip2 解壓縮订咸,程序?qū)缶Y名敏感
  • zcat 解壓縮結(jié)果輸出至標準輸出曼尊,可視作gunzip -c
  • 實驗:


(四)xz/unxz/xzcat

  • xz 壓縮,生成.xz后綴壓縮文件脏嚷,程序?qū)缶Y名敏感
    -d 解壓縮骆撇,相當于unxz
    -k 保留源文件
    -# 指定壓縮比1-9,值越大壓縮比越高父叙,默認為6
  • unxz 解壓縮神郊,程序?qū)缶Y名敏感
  • xzcat 解壓縮結(jié)果輸出至標準輸出,可視作unxz -c
  • 實驗:

    從結(jié)果可以看出趾唱,當改變壓縮文件的后綴.xz后無法解壓涌乳。unxz解壓對文件后綴名敏感。上文的uncompress,gunzip,bunzip2都是后綴名敏感的甜癞。

(五)zip/unzip

  • 可以打包壓縮解壓縮夕晓,而之前的compress,gzip,bzip2,xz只能壓縮單個文件
  • 語法:
    zip 壓縮后文件 壓縮前文件
    -r 遞歸壓縮文件夾,用于打包壓縮
    -p 解壓縮結(jié)果輸出至標準輸出悠咱,可重定向至文件
  • 實驗:


(六)tar 磁帶歸檔

  • 語法:tar [option...] [file]...
  • 用法:
tar cf file.tar file...        //創(chuàng)建歸檔
tar rf file.tar file...        //追加文件至歸檔蒸辆,不支持對壓縮文件追加歸檔
tar tf file.tar                //查看歸檔文件中的文件列表
tar xf file.tar                //展開歸檔,解包文件輸出至當前目錄
tar xf file.tar -C path        //展開歸檔析既,解包文件輸出至指定目錄path
tar zcf file.tar.gz file...    //創(chuàng)建歸檔并使用gzip壓縮躬贡,bzip2使用選項j,xz使用選項J
tar zxf file.tar.gz 
//解壓縮tar.gz壓縮包渡贾,bzip2使用選項j逗宜,xz使用選項J,系統(tǒng)會自動識別壓縮文件類型空骚,z纺讲、j、J可以省略
tar zcf file.tar.gz -T includefilelist -X excludefilelist 
//T選項指定壓縮文件列表includefilelist囤屹,X選項指定排除壓縮文件列表excludefilelist
  • split 分割壓縮文件 split -b size -d tar-file-name prefix-name
  • -b選項指定分割單位熬甚,-d選項指定被分割的壓縮文件和分割后的文件群前綴
  • 使用cat配合重定向合并被分割壓縮文件cat file-part* > file.tar.gz
  • 實驗:
    1、將/etc目錄下所有以f開頭的文件和目錄壓縮為file.tar.gz文件
    2肋坚、查看file.tar.gz文件內(nèi)的文件列表的前5行
    3乡括、將file.tar.gz文件解壓縮,解壓縮文件輸出至/boot目錄

    4智厌、分割file.tar.gz文件诲泌,以3k為分割單位,分割文件前綴為file-part
    5铣鹏、將分割的文件合并為文件file1.tar.gz

(七)cpio 從文件復制或復制文件到

  • cpio 通過重定向方式將文件進行打包敷扫,或者恢復打包文件,可以解壓后綴名為.cpio或.tar的文件
  • 語法:
cpio [option] < filename
cpio [option] > filename
  • 選項:
-o     打包
-i     解包
-t     預覽
-v     顯示過程
-d     解包生成目錄
  • 實驗:

1诚卸、將/app/etc目錄下的所有文件打包到/app下的etc.cpio文件

cd /app
find ./etc | cpio -ov > etc.cpio

2葵第、查看etc.cpio文件內(nèi)容

cpio -tv < etc.cpio

3绘迁、解包etc.cpio 文件到/mnt目錄下

cd /mnt
cpio -idv < /app/etc.cpio
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卒密,隨后出現(xiàn)的幾起案子缀台,更是在濱河造成了極大的恐慌,老刑警劉巖哮奇,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膛腐,死亡現(xiàn)場離奇詭異,居然都是意外死亡鼎俘,警方通過查閱死者的電腦和手機依疼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來而芥,“玉大人律罢,你說我怎么就攤上這事」髫ぃ” “怎么了误辑?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歌逢。 經(jīng)常有香客問我巾钉,道長,這世上最難降的妖魔是什么秘案? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任砰苍,我火速辦了婚禮,結(jié)果婚禮上阱高,老公的妹妹穿的比我還像新娘赚导。我一直安慰自己,他們只是感情好赤惊,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布吼旧。 她就那樣靜靜地躺著,像睡著了一般未舟。 火紅的嫁衣襯著肌膚如雪圈暗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天裕膀,我揣著相機與錄音员串,去河邊找鬼。 笑死昼扛,一個胖子當著我的面吹牛寸齐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼访忿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了斯稳?” 一聲冷哼從身側(cè)響起海铆,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挣惰,沒想到半個月后卧斟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡憎茂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年珍语,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竖幔。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡板乙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拳氢,到底是詐尸還是另有隱情募逞,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布馋评,位于F島的核電站放接,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏留特。R本人自食惡果不足惜纠脾,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕青。 院中可真熱鬧苟蹈,春花似錦、人聲如沸右核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒙兰。三九已至磷瘤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搜变,已是汗流浹背采缚。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挠他,地道東北人扳抽。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贸呢。 傳聞我的和親對象是個殘疾皇子镰烧,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容