2017-07-29 文件查找和壓縮

(1)文件查找

作用:在文件系統(tǒng)上查找符合條件的文件 ?
文件查找:locate, find

  • <a>非實(shí)時(shí)查找(數(shù)據(jù)庫(kù)查找):locate——基于數(shù)據(jù)庫(kù)的查找,不會(huì)隨著磁盤的變化而變化,因此新建的文件不會(huì)被查找出來紧卒,但可以通過'updatedb'來更新數(shù)據(jù)庫(kù)


    image.png
  • 新建了一個(gè)'initscript.sh'文件材诽,但是通過locate無法查找贱傀,更新數(shù)據(jù)庫(kù)后嫂冻,才可以發(fā)現(xiàn)


    image.png

    image.png

    查詢系統(tǒng)上預(yù)建的文件索引數(shù)據(jù)庫(kù) /var/lib/mlocate/mlocate.db ? ? ?
    工作特點(diǎn): ? 查找速度快 ? 模糊查找 ? 非實(shí)時(shí)查找 ? 搜索的是文件的全路徑恤批,不僅僅是文件名 ? 可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄? 索引構(gòu)建過程需要遍歷整個(gè)根文件系統(tǒng),極消耗資源

  • locate有用選項(xiàng)
    -i 不區(qū)分大小寫的搜索 : locate -i ISSUE?
    -n N 只列舉前N個(gè)匹配項(xiàng)目 : locate -n3 issue?
    locate conf ? 搜索名稱或路徑中帶有“conf”的文件 ?locate -r ‘.conf$’——'.'轉(zhuǎn)義
  • <b>實(shí)時(shí)查找:find
    實(shí)時(shí)查找工具尔艇,通過遍歷指定路徑完成文件查找 ?
    工作特點(diǎn): ? 查找速度略慢 ? 精確查找 ? 實(shí)時(shí)查找 ? 可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
    語法: ?find [OPTION]... [查找路徑] [查找條件] [處理動(dòng)作]
    查找路徑:指定具體目標(biāo)路徑尔许;默認(rèn)為當(dāng)前目錄
    查找條件:指定的查找標(biāo)準(zhǔn),可以文件名终娃、大小味廊、類型、 權(quán)限等標(biāo)準(zhǔn)進(jìn)行;默認(rèn)為找出指定路徑下的所有文件
    處理動(dòng)作:對(duì)符合條件的文件做操作余佛,默認(rèn)輸出至屏幕

(2) 查找條件

指搜索層級(jí)
-maxdepth level 最大搜索目錄深度,指定目錄為第1級(jí)


image.png

-mindepth level 最小搜索目錄深度 ?


image.png

如果只要第二層目錄則輸入:find /etc -maxdepth 2 -mindepth 2 -name "*.con"
  • 根據(jù)文件名和inode查找:
    -name "文件名稱":支持使用glob , ?, [], [^]——find /etc -name '.conf'
    image.png

    -iname "文件名稱":不區(qū)分字母大小寫
    -inum n 按inode號(hào)查找 ——find /etc inum 2
    -samefile name 相同inode號(hào)的文件
    image.png

    -links n 鏈接數(shù)為n的文件
    -regex "PATTERN":以PATTERN匹配整個(gè)文件路徑字 符串柠新,而不僅僅是文件名稱,以正則表達(dá)式的方式搜索
    image.png
  • 根據(jù)屬主、屬組查找:
    -user USERNAME:查找屬主為指定用戶(UID)的文件


    image.png

    -group GRPNAME: 查找屬組為指定組(GID)的文件 ——find / -user wang -group wang 這是并列關(guān)系
    -uid UserID:查找屬主為指定的UID號(hào)的文件
    -gid GroupID:查找屬組為指定的GID號(hào)的文件
    -nouser:查找沒有屬主的文件
    -nogroup:查找沒有屬組的文件

  • 根據(jù)文件類型查找:
    -type TYPE:
    ? f: 普通文件 ——find /etc -type f
    ? d: 目錄文件 ——find /etc -type d
    ? l: 符號(hào)鏈接文件 ——軟連接搜索方式 :find /etc -type l
    ? s:套接字文件
    ? b: 塊設(shè)備文件
    ? c: 字符設(shè)備文件
    ? p: 管道文件
    組合條件:
    與:-a 或:-o 非:-not, !
    -a:find / -user wang -a(不寫默認(rèn)為與的關(guān)系) -user mage -a -type d
    -b:find / -user wang -o -user mage
    德·摩根定律:
    (非 A) 或 (非 B) = 非(A 且 B)——find ! \(- user wang -o -user mage)=find ! -user wang -a ! -user mage
    (非 A) 且 (非 B) = 非(A 或 B) ?
    示例: !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” ?
find /var –name “
log” ?
find -user joe -group joe ——搜索用戶joe 以及組群joe所擁有的文件(省略-a)
find -user joe -not -group joe ——用戶是joe,但是用戶組不是joe
find -user joe -o -user jane ——用戶是joe红氯,或者用戶是jane
find -not ( -user joe -o -user jane ) ——除了用戶Joe和Jane的其他用戶
find / -user joe -o -uid 500——尋找根下面的的用戶是joe框咙,且Id號(hào)為500
找出/tmp目錄下咕痛,屬主不是root痢甘,且文件名不以f開頭的文件

image.png

查找/etc/下,除/etc/sane.d目錄的其它所有.conf后 綴的文件
find /etc -path '/etc/sane.d' -a prune -o -name "*.conf"——表現(xiàn)意思是搜索變量/etc/sane.d,并且出現(xiàn)剪切掉茉贡,再顯示以
.conf結(jié)尾的文件

查找條件

  • 根據(jù)文件大小來查找:
    -size [+|-]#UNIT 常用單位:k, M, G塞栅,c(byte) #UNIT: (#-1, #] 表示搜索范圍是(9k,10k]


    image.png

    -#UNIT:(0,#-1]表示搜索范圍為(0,9k] -10k


    image.png

    +#UNIT:(#,∞) 如:+6k 表示(6k,∞)——不包括6k
  • 根據(jù)時(shí)間戳:
    以“天”為單位;
    -atime [+|-]#,
    : [#,#+1) ——find / -atime 10:時(shí)間范圍為[10,11)
    +#: [#+1,∞] ——find / -atime +10: 時(shí)間范圍是[11,+無窮]
    -#: [0,#) ——時(shí)間范圍是[0,10)
    -mtime -ctime
    以“分鐘”為單位:
    -amin -mmin -cmin
    示例:userdel -r wang 腔丧; find / (-path "/proc" -o -path "sys") -a prune -o -mmin -1
  • 根據(jù)權(quán)限查找:
    -perm [/|-]MODE
    MODE: 精確權(quán)限匹配
    /MODE:任何一類(u,g,o)對(duì)象的權(quán)限中只要能一位匹配 即可放椰,或關(guān)系,+ 從centos7開始淘汰——如圖只要有一個(gè)(u,g,o)滿足r的權(quán)限就可以
    image.png

    image.png
    -MODE:每一類對(duì)象都必須同時(shí)擁有指定權(quán)限
    如圖顯示每個(gè)權(quán)限都至少要意思要擁有r的權(quán)限
    image.png
    find -perm -440:表示不在乎'o'的權(quán)限愉粤,只要用戶和用戶組具有r權(quán)限即可
    find -perm 755 會(huì)匹配權(quán)限模式恰好是755的文件
    只要當(dāng)任意人有寫權(quán)限時(shí)砾医,find -perm /222就會(huì)匹配
    只有當(dāng)每個(gè)人都有寫權(quán)限時(shí),find -perm -222才會(huì)匹配
    只有當(dāng)其它人(other)有寫權(quán)限時(shí)衣厘,find -perm -002才 會(huì)匹配

(3)處理動(dòng)作

-print:默認(rèn)的處理動(dòng)作如蚜,顯示至屏幕 ?
-ls:類似于對(duì)查找到的文件執(zhí)行“l(fā)s -l”命令 ?
-delete:刪除查找到的文件 ?—— find /etc -perm /022 -a-type f -delete:找到/etc目錄下權(quán)限為022的文件,找到后并且刪除改文件
-fls file:查找到的所有文件的長(zhǎng)格式信息保存至指定文件中——find /etc -perm /002 -a -type f -ls (不寫-ls表示不顯示長(zhǎng)格式保存)-fls /root/find.log ?
-ok COMMAND {} ; 對(duì)查找到的每個(gè)文件執(zhí)行由COMMAND 指定的命令影暴,對(duì)于每個(gè)文件執(zhí)行命令之前错邦,都會(huì)交互式要求 用戶確認(rèn)——find /etc -perm /002 -a -type f -ok chmod o-w {} \; 但是如果修改文件較多的時(shí)候,每次提示會(huì)很麻煩煩型宙,因此引用下面的命令
-exec COMMAND {} ; 對(duì)查找到的每個(gè)文件執(zhí)行由 COMMAND指定的命令 ——不提示用戶撬呢,直接對(duì)文件進(jìn)行批量修改,但是安全性不如-ok?——find /etc -perm /002 -a -type f -exec chmod o-w {} \;
{}: 用于引用查找到的文件名稱自身 ——find /etc -name 'f*' -a -type f exec mv {} {}.bak o-w {} \;
find傳遞查找到的文件至后面指定的命令時(shí)妆兑,查找到所有符合 條件的文件一次性傳遞給后面的命令

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

由于很多命令不支持管道|來傳遞參數(shù)魂拦,而日常工作中有這個(gè) 必要,所以就有了xargs命令 ?
xargs用于產(chǎn)生某個(gè)命令的參數(shù)搁嗓,xargs 可以讀入 stdin 的數(shù) 據(jù)晨另,并且以空格符或回車符將 stdin 的數(shù)據(jù)分隔成為 arguments ?
注意:文件名或者是其他意義的名詞內(nèi)含有空格符的情況 ?
有些命令不能接受過多參數(shù),命令執(zhí)行可能會(huì)失敗谱姓,xargs可 以解決 ?
find /sbin -perm +7000 | xargs ls –l ?
find和xargs格式:find | xargs COMMAND—— echo f* | xargs touch:批量創(chuàng)建以f開頭的文件 echo f* |xargs rm: 批量刪除以f開頭的文件
find -name “.conf” -exec cp {} {}.orig ; —— 備份以.conf結(jié)尾的配置文件借尿,并為該文件添加.orig這個(gè)擴(kuò)展名
find /tmp -ctime +3 -user joe -ok rm {} ; —— 找到存在時(shí)間(元數(shù)據(jù))超過3天以上的joe的臨時(shí)文件 并將其刪除(交互式提醒)?
find ~ -perm -002 -exec chmod o-w {} ; —— 在你的主目錄中尋找可被其它用戶寫入的文件 ,并將該其他用戶去掉寫權(quán)限?
find /data –type f -perm 644 -name “
.sh” –exec chmod 755 {} ; ——尋找在/data下的權(quán)限為644并以.sh后綴命名的文件,將其權(quán)限改為755?
find /home –type d -ls——找目錄

(5)壓縮路翻、解壓縮及歸檔工具

compress [-dfvcVr] [-b maxbits] [file ...]注意后綴 '.Z'

image.png

-d: 解壓縮狈癞,相當(dāng)于uncompress
image.png

-c: 結(jié)果輸出至標(biāo)準(zhǔn)輸出,不刪除原文件
image.png

-v: 顯示壓縮過程詳情 ?
uncompress 解壓縮 =-d?
zcat file.Z >file——解壓縮重定向到新的文件
image.png

gzip [OPTION]... FILE ... ——也會(huì)將原始文件刪除,只顯示壓縮后的文件茂契,但是壓縮比相對(duì)強(qiáng)大
image.png

-d: 解壓縮蝶桶,相當(dāng)于gunzip,作用原理類似上述壓縮方式
image.png

-c: 將壓縮或解壓縮的結(jié)果輸出至標(biāo)準(zhǔn)輸出 如圖保留了壓縮文件掉冶,并解壓文件
image.png

-#:1-9真竖,指定壓縮比,值越大壓縮比越大 ?
zcat:不顯式解壓縮的前提下查看文本文件內(nèi)容 ——直接解壓縮厌小,既支持.Z恢共,也支持.gz?
實(shí)例: gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
bzip2 [OPTION]... FILE ...
-k: keep, 保留原文件
image.png

-d:解壓縮
-#:1-9,壓縮比璧亚,默認(rèn)為9 ?
bzcat:不顯式解壓縮的前提下查看文本文件內(nèi)容
xz [OPTION]... FILE ...
-k: keep, 保留原文件
-d:解壓縮
-#:1-9讨韭,壓縮比,默認(rèn)為6 ?
xzcat: 不顯式解壓縮的前提下查看文本文件內(nèi)容
打包壓縮 zip –r /testdir/sysconfig /etc/sysconfig/ ?
解包解壓縮
unzip sysconfig.zip
cat /var/log/messages | zip messages
unzip -p message > message
tar工具
Tar(Tape ARchive癣蟋,磁帶歸檔的縮寫) ?
tar [OPTION]...
(1) 創(chuàng)建歸檔 tar -c -f /PATH/TO/SOMEFILE.tar FILE...—— "tar -cvf /app/scripts.tar /root/bin/:將bin下的內(nèi)容打包到app下的scripts.tar下"
--exclude:排除某文件—— tar -cfv /app/scripts.var --exclude filename /root/bin/

(2) 追加文件至歸檔: 注:不支持對(duì)壓縮文件追加
tar -r -f /PATH/TO/SOMEFILE.tar FILE...
(3) 查看歸檔文件中的文件列表 tar -t -f /PATH/TO/SOMEFILE.tar
(4) 展開歸檔 tar -x -f /PATH/TO/SOMEFILE.tar tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
(5) 結(jié)合壓縮工具實(shí)現(xiàn):歸檔并壓縮 -j: bzip2, -z: gzip, -J: xz
-T選項(xiàng)指定輸入文件,-X選項(xiàng)指定包含要排除的文件列表
tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist ?
分割大的 tar 文件為多份小文件: split –b Size –d tar-file-name prefix-name
split -b 1M –d mybackup.tgz mybackup-parts
split -b 1M mybackup.tgz mybackup-parts
(6)示例:
將etc目錄備份: find ./etc -print |cpio -ov >etc.cpio ?
內(nèi)容預(yù)覽 cpio –tv < etc.cpio ?
要解包文件 cpio –idv < etc.cpio

練習(xí)題

1透硝、查找/var目錄下屬主為root,且屬組為mail的所有文件 ?


image.png

2疯搅、查找/var目錄下不屬于root濒生、lp、gdm的所有文件


image.png

3幔欧、查找/var目錄下最近一周內(nèi)其內(nèi)容修改過罪治,同時(shí)屬主不為 root,也不是postfix的文件 ?
image.png

4琐馆、查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M规阀,且最近一個(gè)周內(nèi)曾被訪 問過的文件
image.png

5、查找/etc目錄下大于1M且類型為普通文件的所有文件
image.png

6瘦麸、查找/etc目錄下所有用戶都沒有寫權(quán)限的文件
image.png

7谁撼、查找/etc目錄下至少有一類用戶沒有執(zhí)行權(quán)限的文件
image.png

8、查找/etc/init.d目錄下滋饲,所有用戶都有執(zhí)行權(quán)限厉碟,且其它 用戶有寫權(quán)限的文件
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屠缭,隨后出現(xiàn)的幾起案子箍鼓,更是在濱河造成了極大的恐慌,老刑警劉巖呵曹,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件款咖,死亡現(xiàn)場(chǎng)離奇詭異何暮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铐殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門海洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人富腊,你說我怎么就攤上這事坏逢。” “怎么了赘被?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵是整,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我民假,道長(zhǎng)浮入,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任阳欲,我火速辦了婚禮舵盈,結(jié)果婚禮上陋率,老公的妹妹穿的比我還像新娘球化。我一直安慰自己,他們只是感情好瓦糟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布筒愚。 她就那樣靜靜地躺著,像睡著了一般菩浙。 火紅的嫁衣襯著肌膚如雪巢掺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天劲蜻,我揣著相機(jī)與錄音陆淀,去河邊找鬼。 笑死先嬉,一個(gè)胖子當(dāng)著我的面吹牛轧苫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疫蔓,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼含懊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了衅胀?” 一聲冷哼從身側(cè)響起岔乔,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滚躯,沒想到半個(gè)月后雏门,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘿歌,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年茁影,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搅幅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呼胚,死狀恐怖茄唐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝇更,我是刑警寧澤沪编,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站年扩,受9級(jí)特大地震影響蚁廓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨幻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一相嵌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧况脆,春花似錦饭宾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盛末,卻和暖如春弹惦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悄但。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工棠隐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檐嚣。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓助泽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親净嘀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子报咳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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