文件查找及壓縮工具

文件查找

locate勤晚,模糊查找,非實時查找(數據庫查找)
find:實時查找

locate

  • 查詢系統(tǒng)上預建的文件索引數據庫
    /var/lib/mlocate/mlocate.db,此數據庫每天更新一次院喜,也可手動更新數據庫(updatedb)
  • 依賴于事先構建的索引
    索引的構建是在系統(tǒng)較為空閑時自動進行( 周期性 任務)夺荒,管理員手動更新數據庫(updatedb)
  • 索引構建過程需要遍歷整個根文件系統(tǒng)脚牍,極消耗資源
  • 工作特點:
?  查找速度 快
?  模糊查找
?  非實時查找
?  搜索的是文件的全路徑凉袱,不僅僅是文件名
?  可能只搜索用戶具備讀取和執(zhí)行權限的目錄
  • locate命令:

locate KEYWORD

可用的選項
    ? -i 不區(qū)分大小寫的搜索
    ? -n N 只列舉前N 個匹配項目

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

locate -r ‘.conf$’
? 使用Regex 來搜索以“.conf ”結尾的文件

find

實時查找工具闷板,通過遍歷指定路徑完成文件查找
工作特點:

? 查找速度略慢
? 精確查找
? 實時查找
? 可能只搜索用戶具備讀取和執(zhí)行權限的目錄

語法:
find [OPTION]... [ 查找路徑] [ 查找條件] [ 處理動作]

  1. 查找路徑:指定具體目標路徑逗柴;默認為當前目錄
  2. 查找條件:指定的查找標準蛹头,可以文件名、大小戏溺、類型渣蜗、權限等標準進行;默認為找出指定路徑下的所有文件
  3. 處理動作:對符合條件的文件做操作旷祸,默認輸出至屏幕
  • 查找條件:

指定搜索層級

-maxdepth level  最大搜索目錄深度, 指定目錄為第1級 級
-mindepth level  最大搜索目錄深度

根據文件名和inode 查找:

-name " 文件名稱" :支持使用glob
    *, ?, [], [^]耕拷,通配符需要加“ ”
-iname " 文件名稱" :不區(qū)分字母大小寫
-inum n 按inode 號查找
-samefile name 相同inode 號的文件
-links n 鏈接數為n 的文件
-regex "PATTERN" :以PATTERN 匹配整個文件路徑字符串,而不僅僅是文件名稱


查找.sh結尾的文件

  • 根據屬主托享、屬組查找:

    -user USERNAME :查找屬主為指定用戶(UID) 的文件
    -group GRPNAME: 查找屬組為指定組(GID) 的文件
    -uid UserID :查找屬主為指定的UID 號的文件
    -gid GroupID :查找屬組為指定的GID 號的文件
    -nouser :查找沒有屬主的文件
    -nogroup :查找沒有屬組的文件

  • 根據文件類型查找:

-type TYPE:
    ? f:  普通文件
    ? d:  目錄文件
    ? l:  符號鏈接文件
    ? s :套接字文件
    ? b:  塊設備文件
    ? c:  字符設備文件
    ? p: 管道文件
  • 組合條件: 優(yōu)先級順序:not>a>o

與:-a
或:-o
非:-not, !
  • 德· 摩根定律:

(非 A) 或 (非 B) =  非(A 且 B)
(非 A) 且 (非 B) =  非(A 或 B)

示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

  • find示例:

find -user joe -not -group joe
find -user joe -o -user jane
find -not \( -user joe -o -user jane \)
find / -user joe -o -uid 500
找出/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”
    find /etc (–path ‘/etc/sane.c’ –o –path ’/etc/fonts’ ) -a -prune –o name “
    .conf”


  • 根據文件大小來查找
-size [+|-]#UNIT
    常用單位:k, M, G 赃绊,c (byte) 
    #UNIT: (#-1, #]
        如:6k  表示(5k,6k]
    -#UNIT :[0,#-1]
        如:-6k  表示[0,5k]
    +#UNIT :(#, ∞ )
        如:+6k  表示(6k ,∞ )



查找大于1M小于10M的文件

  • 根據時間戳:
以“天”為單位;
    -atime [+|-]#,
        #: [#,#+1)
        +#: [#+1, ∞ ]
        -#: [0,#)
    -mtime
    -ctime
以“分鐘”為單位:
    -amin
    -mmin
    -cmin
  • 根據權限查找:
  • -perm [/|-]MODE

MODE: 精確權限匹配
/MODE :任何一類(u,g,o) 對象的權限中只要能一位匹配即可羡榴,或關系碧查,+ 從centos7 開始淘汰
-MODE :每一類對象都必須同時擁有指定權限,與關系0表示不關注

  • find -perm 755 會匹配權限模式恰好是755的文件
  • 只要當任意人有寫權限時校仑,find -perm /222 就會匹配
  • 只有當每個人都有寫權限時么夫,find -perm -222 才會匹配
  • 只有當其它人(other )有寫權限時者冤,find -perm -002才會匹配
  • 處理動作:
-print :默認的處理動作,顯示至屏幕
-ls :類似于對查找到的文件執(zhí)行“l(fā)s -l” 命令
-delete :刪除查找到的文件
-fls file :查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \;  對查找到的每個文件執(zhí)行由 COMMAND指定的命令档痪,對于每個文件執(zhí)行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \;  對查找到的每個文件執(zhí)行由COMMAND 指定的命令
{}:  用于引用查找到的文件名稱自身   



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

xargs

參數替換xargs

由于很多命令不支持管道|來傳遞參數腐螟,而日常工作中有這個必要,所以就有了xargs 命令
xargs 用于產生 某個命令的參數困后,xargs入可以讀入 stdin 的數據乐纸,并且以空格符或回車符將stdin的數據分隔 成為arguments
注意:文件名或者是其他意義的名詞內含有空格符 的情況
有些命令不能接受過多參數,命令執(zhí)行 可能會失敗摇予,xargs可以解決
示例:

ls f* |xargs rm
find /sbin -perm +700 |ls -l   這個命令是錯誤的
find /sbin -perm +7000 | xargs ls –l

find 和xargs 格式:find | xargs COMMAND

  • find示例
find -name “*.conf” -exec cp {} {}.orig \;
     備份配置文件汽绢,添加.orig 這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;
     提示刪除存在時間超過3天以上的joe 的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;
    在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
find /home –type d -ls

壓縮、解壓縮及歸檔工具

file-roller 應用在圖形界面
compress/uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar
cpio

  • compress/uncompress
compress [-dfvcVr] [-b maxbits] [file ...]
    -d:  解壓縮侧戴,相當于uncompress
    -c:  結果輸出至標準輸出, 不刪除原文件
    -v:  顯示詳情
uncompress 解壓縮
zcat file.Z >file


  • gzip/gunzip
gzip [OPTION]... FILE ...    壓縮同時刪除原文件
    -d:  解壓縮宁昭,相當于gunzip
    -c:  將壓縮或解壓縮的結果輸出至標準輸出
    -# :1-9 ,指定壓縮比酗宋,值越大壓縮比越大
zcat :不顯式解壓縮的前提下查看文本文件內容

實例:

gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
  • bzip2/bunzip2/bzcat
bzip2 [OPTION]... FILE ...
    -k: keep,  保留原文件
    -d :解壓縮
    -# :1-9 积仗,壓縮比,默認為6
bzcat :不顯式解壓縮的前提下查看文本文件內容
  • xz/unxz/xzcat
xz [OPTION]... FILE ...
    -k: keep,  保留原文件
    -d :解壓縮
    -# :1-9 蜕猫,壓縮比寂曹,默認為6
xzcat:  不顯式解壓縮的前提下查看文本文件內容
  • zip/unzip
打包壓縮
    zip –r app/sysconfig /etc/sysconfig/    將/etc/sysconfig 目錄打包壓縮為app/sysconfig

解包解壓縮
unzip sysconfig.zip
cat /var/log/messages | zip messages -
unzip -p message > message

tar工具

Tar (Tape ARchive ,磁帶歸檔的 縮寫)

tar [OPTION]...
    -c: 建立壓縮檔案
    -C 解壓到指定文件
    -x:解壓
    -t:查看內容
    -r:向壓縮歸檔文件末尾追加文件
    -u:更新原壓縮包中的文件-c:打包
    -f: 使用檔案名字回右,切記隆圆,這個參數是最后一個參數,后面只能接檔案名翔烁。    這個參數是必須的

    -z:有gzip屬性的
    -j:有bz2屬性的
    -J:xz屬性
    -Z:有compress屬性的
    -v:顯示所有過程
    -O:將文件解開到標準輸出
  1. 創(chuàng)建歸檔
    tar -c -f /PATH/TO/SOMEFILE.tar FILE...
  2. 追加文件至歸檔: 注:不支持對壓縮文件追加
    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. 結合壓縮工具實現:歸檔并壓縮
    -j: bzip2, -z: gzip, -J: xz

將文件解壓縮到/tmp下

  • -T 選項指定輸入文件列表, X 選項指定包含要排除的文件列表
將打包的文件寫入文件列表渺氧,打包時讀取文件列表    
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
  • 將多個小文件合并為一個大文件
cat mybackup-parts* > mybackup.tar.gz

cpio

cpio命令主要是用來建立或者還原備份檔的工具程序,cpio命令可以復制文件到歸檔包中租漂,或者從歸檔包中復制文件
cpio 命令是通過重定向的方式將文件進行打包備份阶女,還原恢復的工具,它可以解壓以“.cpio或者“.tar” 結尾的文件哩治。

cpio [ 選項] >  文件名或者設備名    
cpio [ 選項] <  文件名或者設備名    
    選項
      -o  將文件拷貝打包成文件或者將文件輸出到設備上
        -i  解包秃踩,將打包文件解壓或將設備上的備份還原到系統(tǒng)
        -t  預覽,查看文件內容或者輸出到設備上的文件內容
        -v  顯示打包過程中的文件名稱业筏。
        -d  解包生成目錄憔杨,在cpio 還原時,自動的建立目錄
        -c  一種較新的存儲方式

示例:

將etc 目錄備份:   
    find ./etc -print |cpio -ov >etc.cpio   
內容預覽   
    cpio –tv < etc.cpio   
要解包文件   
    cpio –idv < etc.cpio
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蒜胖,一起剝皮案震驚了整個濱河市消别,隨后出現的幾起案子抛蚤,更是在濱河造成了極大的恐慌,老刑警劉巖寻狂,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岁经,死亡現場離奇詭異,居然都是意外死亡蛇券,警方通過查閱死者的電腦和手機缀壤,發(fā)現死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纠亚,“玉大人塘慕,你說我怎么就攤上這事〉侔” “怎么了图呢?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骗随。 經常有香客問我蛤织,道長,這世上最難降的妖魔是什么蚊锹? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任瞳筏,我火速辦了婚禮,結果婚禮上牡昆,老公的妹妹穿的比我還像新娘姚炕。我一直安慰自己,他們只是感情好丢烘,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布柱宦。 她就那樣靜靜地躺著,像睡著了一般播瞳。 火紅的嫁衣襯著肌膚如雪掸刊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天赢乓,我揣著相機與錄音忧侧,去河邊找鬼。 笑死牌芋,一個胖子當著我的面吹牛蚓炬,可吹牛的內容都是我干的。 我是一名探鬼主播躺屁,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肯夏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起驯击,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤烁兰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后徊都,有當地人在樹林里發(fā)現了一具尸體沪斟,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年暇矫,在試婚紗的時候發(fā)現自己被綠了币喧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡袱耽,死狀恐怖,靈堂內的尸體忽然破棺而出干发,到底是詐尸還是另有隱情朱巨,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布枉长,位于F島的核電站冀续,受9級特大地震影響,放射性物質發(fā)生泄漏必峰。R本人自食惡果不足惜洪唐,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吼蚁。 院中可真熱鬧凭需,春花似錦、人聲如沸肝匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旗国。三九已至枯怖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間能曾,已是汗流浹背度硝。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寿冕,地道東北人蕊程。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蚂斤,于是被迫代替她去往敵國和親存捺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容