五、文件查找壓縮及文本處理SED

一低零、文件查找工具

locate 非實時查找(數(shù)據(jù)庫查找)副硅,模糊匹配
依賴建立數(shù)據(jù)庫索引:updatedb命令
/var/lib/mlocate/mlocate.db 數(shù)據(jù)庫文件
索引構建過程需要遍歷整個根文件系統(tǒng)丙曙,極消耗資源
特點:

  • 查找速度快
  • 模糊查找
  • 非實時查找
  • 搜索的是文件的全路徑,不僅僅是文件名
  • 可能只搜索用戶具備讀取和執(zhí)行權限的目錄
    選項
    -i 不區(qū)分大小寫的搜索
    -n N 只列舉前N個匹配項目
    -r 使用基本正則表達式

find 實時查找工具其骄,通過遍歷指定路徑完成文件查找
特點:

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

語法:find [OPTION]... [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑亏镰;默認為當前目錄且遞歸
查找條件:指定的查找標準,可以文件名拯爽、大小索抓、類型、權限等標準進行毯炮;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作逼肯,默認輸出至屏幕

查找條件
指定搜索層級
-maxdepth level 最大搜索目錄深度,指定目錄下的文件為第1級
-mindepth level 最小搜索目錄深度

先處理目錄內的文件,再處理指定目錄
-depth

根據(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 TYPE
f: 普通文件
d: 目錄文件
l: 符號鏈接文件
s:套接字文件
b: 塊設備文件
c: 字符設備文件
p: 管道文件

空文件或目錄:
-empty
示例:

find /app -type d -empty

組合條件:
與:-a
或:-o
非:-not !
德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find示例
找出/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"

查找/etc/下,除/etc/sane.d和/etc/fonts兩個目錄的所有.conf后綴的文件

find /etc \\( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf"

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

示例:
查找/etc目錄下大于1M且類型為普通文件的所有文件

find /etc -size +1M -a -type f

根據(jù)時間戳:
以“天”為單位
-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-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才會匹配

處理動作
-print:默認的處理動作鸦列,顯示至屏幕
-ls:類似于對查找到的文件執(zhí)行“l(fā)s -l”命令
-delete:刪除查找到的文件
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} ; 對查找到的每個文件執(zhí)行由COMMAND指定的命令,對于每個文件執(zhí)行命令之前鹏倘,都會交互式要求用戶確認
-exec COMMAND {} ; 對查找到的每個文件執(zhí)行由COMMAND指定的命令
{}: 用于引用查找到的文件名稱自身薯嗤,完整路徑

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

參數(shù)替換xargs
由于很多命令不支持管道|來傳遞參數(shù)纤泵,xargs用于產生某個命令的參數(shù)骆姐,xargs 可以讀入 stdin 的數(shù)據(jù),并且以空格符或回車符將 stdin 的數(shù)據(jù)分隔成為參數(shù)捏题。
許多命令不能接受過多參數(shù)玻褪,命令執(zhí)行可能會失敗,xargs可以解決
注意:文件名或者是其他意義的名詞內含有空格符的情況
find和xargs的組合:find | xargs COMMAND

示例:
1.刪除當前目錄下的大量文件

ls | xargs rm

2.創(chuàng)建10個用戶公荧,指定每次傳遞的參數(shù)為1個

echo user{1..10} | xargs -n1 useradd

3.find命令執(zhí)行結果以0作為分隔符傳遞標準輸入參數(shù)带射,默認為空格

find -type f -name "*.txt" -print0 | xargs -0 rm

二、壓縮循狰、解壓縮及歸檔工具

  • file-roller(圖形工具)
  • compress/uncompress: .Z
  • gzip/gunzip: .gz
  • bzip2/bunzip2: .bz2
  • xz/unxz: .xz
  • zip/unzip
  • tar
  • cpio

命令:gzip/gunzip
語法:gzip [OPTION]... FILE ...
選項:
-d 解壓縮窟社,相當于gunzip
-c 結果輸出至標準輸出捻浦,保留原文件不改變
-# 指定壓縮比,#取值為1-9桥爽,值越大壓縮比越大

命令:gunzip file.gz 解壓縮
???????????zcat file.gz 不顯式解壓縮的前提下查看文本文件內容
示例:
gzip -c messages > messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
cat messages | gzip > m.gz

tar工具
tar(Tape ARchive,磁帶歸檔的縮寫)
語法:tar [OPTION]…
選項:
-exclude 排除文件
-T 選項指定輸入文件 -X 選項指定包含要排除的文件列表

常用示例:

  1. 創(chuàng)建歸檔昧识,保留權限
tar -cpvf /PATH/FILE.tar FILE...

2.追加文件至歸檔: 注:不支持對壓縮文件追加

tar -r -f /PATH/FILE.tar FILE...

3.查看歸檔文件中的文件列表

tar -t -f /PATH/FILE.tar

4.展開歸檔

tar -x -f /PATH/FILE.tar

-C選項钠四,指定解包的目錄

tar -x -f /PATH/FILE.tar -C /PATH/

5.結合壓縮工具實現(xiàn):歸檔并壓縮
使用-j: bzip2, -z: gzip, -J: xz選項
打包/etc/目錄下面所有conf結尾的文件,壓縮包名稱為當天的時間跪楞,并拷貝到/usr/local/src目錄備份缀去。

find /etc -name *.conf |xargs tar zcvf $(date +%Y%m%d%H%M).tar;cp $(date +%Y%m%d%H%M).tar /usr/local/src/

6.將/app目錄下的文件進行歸檔壓縮,排除/app/host1甸祭、/app/host2文件夾

tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app

7.將/app目錄下的文件進行歸檔壓縮缕碎,指定包含和排除文件

tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist

三、文本處理三劍客之SED
???????sed(Stream EDitor, 行編輯器)是一種流編輯器池户,它一次處理一行內容咏雌。處理時,把當前處理的行存儲在臨時緩沖區(qū)中校焦,稱為“模式空間”(pattern space)赊抖,接著用sed命令處理緩沖區(qū)中的內容,處理完成后寨典,把緩沖區(qū)的內容送往屏幕氛雪。然后讀入下行,執(zhí)行下一個循環(huán)耸成。如果沒有使諸如'D'的特殊命令报亩,那會在兩個循環(huán)之間清空模式空間,但不會清空保留空間井氢。這樣不斷重復弦追,直到文件末尾。文件內容并沒有改變毙沾,除非你使用重定向存儲輸出骗卜。
功能:主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等

用法:
sed [option]... 'script' inputfile...
常用選項:
-n 不輸出模式空間內容到屏幕,即不自動打印
-e 多點編輯
-f /PATH/SCRIPT_FILE 從指定文件中讀取編輯腳本
-r 支持使用擴展正則表達式
-i.bak 備份文件并原處編輯
script:
'地址命令'

地址定界:
(1) 不給地址:對全文進行處理
(2) 單地址:
#:指定的行左胞,$:最后一行
/pattern/:被此處模式所能夠匹配到的每一行
(3) 地址范圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
(4) ~:步進
1~2 奇數(shù)行
2~2 偶數(shù)行

編輯命令:
d 刪除模式空間匹配的行寇仓,并立即啟用下一輪循環(huán)
p 打印當前模式空間內容,追加到默認輸出之后
a []text 在指定行后面追加文本烤宙,支持使用\n實現(xiàn)多行追加
i []text 在行前面插入文本
c []text 替換行為單行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 讀取指定文件的文本至模式空間中匹配到的行后
= 為模式空間中的行打印行號
! 模式空間中匹配行取反處理

s /// 查找替換
支持使用其它分隔符遍烦,s@@@,s###

替換標記:
g 行內全局替換
p 顯示替換成功的行
w /PATH/FILE 將替換成功的行保存至文件中

示例:

  1. 取出ifconfig命令中本機的IPv4地址
ifconfig eth0 |sed -nr '2s/^[^0-9]+([0-9.]+).*$/\1/p'
  1. 刪除/etc/fstab文件中所有以#開頭躺枕,后面至少跟一個空白字符的行的行首的#和空白字符
sed -nr 's/^#[[:space:]]+(.*)/\1/p' /etc/fstab
  1. 處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
echo /etc/fstab |sed -r 's@(^/.*/)([^/]+)/?$@\1\n\2@'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末服猪,一起剝皮案震驚了整個濱河市供填,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罢猪,老刑警劉巖近她,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膳帕,居然都是意外死亡粘捎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門危彩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攒磨,“玉大人,你說我怎么就攤上這事汤徽∶溏郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵谒府,是天一觀的道長拼坎。 經常有香客問我,道長完疫,這世上最難降的妖魔是什么演痒? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮趋惨,結果婚禮上鸟顺,老公的妹妹穿的比我還像新娘。我一直安慰自己器虾,他們只是感情好讯嫂,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兆沙,像睡著了一般欧芽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葛圃,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天千扔,我揣著相機與錄音,去河邊找鬼库正。 笑死曲楚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的褥符。 我是一名探鬼主播龙誊,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喷楣!你這毒婦竟也來了趟大?” 一聲冷哼從身側響起鹤树,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逊朽,沒想到半個月后罕伯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡叽讳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年捣炬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绽榛。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婿屹,靈堂內的尸體忽然破棺而出灭美,到底是詐尸還是另有隱情,我是刑警寧澤昂利,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布届腐,位于F島的核電站,受9級特大地震影響蜂奸,放射性物質發(fā)生泄漏犁苏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一扩所、第九天 我趴在偏房一處隱蔽的房頂上張望围详。 院中可真熱鬧,春花似錦祖屏、人聲如沸助赞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雹食。三九已至,卻和暖如春期丰,著一層夾襖步出監(jiān)牢的瞬間群叶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工钝荡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留街立,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓埠通,卻偏偏與公主長得像几晤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子植阴,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355