您好,登錄后才能下訂單哦!
文件查找和解壓縮
在文件系統(tǒng)上查找符合條件的文件,文件查找的工具有兩個(gè),locate 和 find
文件查找分為:
locate 非實(shí)時(shí)查找 (在數(shù)據(jù)庫(kù)查找)
updatedb 更新數(shù)據(jù)庫(kù)
經(jīng)常用于搜索穩(wěn)定的文件,比如配置文件
var/lib/mlocate/mlocate.db 數(shù)據(jù)庫(kù)路徑
find 實(shí)時(shí)查找
locate :
查詢系統(tǒng)上預(yù)建的文件索引數(shù)據(jù)庫(kù)
/var/lib/mlocate/mlocate.db
依賴于實(shí)現(xiàn)構(gòu)建的索引;索引的構(gòu)建實(shí)在系統(tǒng)較為空閑時(shí)自動(dòng)進(jìn)行(周期性任務(wù))
管理員可以手動(dòng)更新數(shù)據(jù)庫(kù) updatedb
索引構(gòu)建過(guò)程需要遍歷整個(gè)根文件系統(tǒng),及其消耗資源
工作特點(diǎn):查找速度快
模糊查找
非實(shí)時(shí)精準(zhǔn)查找
搜索的是文件的全路徑,不僅僅是文件名
可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
locate 選項(xiàng) 關(guān)鍵字
locate -i AAA 執(zhí)行時(shí)不區(qū)分大小寫的搜索
locate -n 2 aa 只列出前幾個(gè)的匹配項(xiàng)目
locate makangbo 搜索名稱或路徑中帶有makangbo的文件
locate -r ‘\.bash$’ 使用正則表達(dá)式來(lái)搜索以 bash結(jié)尾的文件
find 實(shí)時(shí)查找工具,通過(guò)遍歷指定路徑完成文件查找;
特點(diǎn):精確查找、精準(zhǔn)查找、速度慢 、可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
語(yǔ)法:find [選項(xiàng)] [查找路徑] [查找條件] [處理動(dòng)作]
查找路徑:指定具體目路徑;默認(rèn)為當(dāng)前目錄
查找條件:指定的查找標(biāo)準(zhǔn),可以文件名,大小,類型,權(quán)限等標(biāo)準(zhǔn)進(jìn)行;默認(rèn)為指定路徑下的所有文件
處理動(dòng)作: 對(duì)符合條件做操作,默認(rèn)輸出至屏幕
查找條件:
根據(jù)文件名和inode查找
-name "file" 支持使用正則表達(dá)式 ]# find -name makangbo 搜索名為makangbo 的文件
* ? [] [^] ~]# find / -name "*.txt" 搜索根目錄以 *.txt為結(jié)尾前面是任意字符的文件
-iname "file" 不區(qū)分字母的大小寫 ]# find -iname MAkangbo 不去分大小寫的搜索名為makango 或者M(jìn)Akangbo 等文件
-inum inode 按照inode號(hào)查找 ]# find -inum 5555 節(jié)點(diǎn)號(hào)文件搜索
-samefile filename 相同inode號(hào)的文件
-links 鏈接數(shù) 鏈接數(shù)為多少的文件 ]# find -in -links 5 鏈接數(shù)為6的文件
-regex "表達(dá)式" 以表達(dá)式匹配整個(gè)文件路徑字符串,而不僅僅是文件名稱
-user 用戶名 根據(jù)文件的屬主查找
-group 組名 根據(jù)文件的屬組查找
-uid UID 根據(jù)UID查找文件
-gid GID 根據(jù)GID查找文件
-nouser 查找沒有屬主的文件
-nogroup 查找沒有屬組的文件
根據(jù)文件類型查找:
-]# find -user makangbo -type f 例如查找用戶之下的普通文件
f 普通文件
d 目錄文件
l 符號(hào)鏈接文件
s 套接字文件
b 塊設(shè)備文件
c 字符設(shè)備文件
p 管道文件
組合條件查找:
-a 與
-o 或
-not ,! 非
-not A-a -not B = -not(A -o B) 不是A 也不是B
-not A-o -not B = -not(A -a B) 不是A或者不是B
!A -a !B=!(A -o B) 不是A 也不是 B
!A -O !B=!(A -a B) 不是A 或者不是B
注意:括號(hào)需要轉(zhuǎn)義\(\)
德摩根定律:
非P 或 非Q = 非(P 且 Q) 前面兩個(gè)第一個(gè)不是P 或者不是Q,那就是不是的意思,同等與不是(P與Q)
非P 且 非Q = 非(P 或 Q) 前面兩個(gè)第一個(gè)不是P 并且不是Q ,那就是,兩個(gè)都是非的意思,同等與 不是(P或者Q)
~]# find /var -name "*log*" 搜索/var目錄下以 log為關(guān)鍵字的搜索文件前后匹配任意字符
~]# find -user makangbo -group makangbo 搜索 用戶makangbo 以及組群makangbo 所擁有的文件
]# find -user makangbo -not -group makangbo 搜索用戶makangbo 組不是makangbo的文件
]# find -user makangbo -o -user root 搜索用戶makangbo 或者 用戶root 的文件 滿足一個(gè)條件即可
]# find -not \( -user makangbo -o -user root \) 搜索不是 和用戶makangbo 或者 用戶root 的文件
]# find / -user makangbo -o -uid 500 搜索根目錄下 用戶makangbo 或者 uid 500 的文件
]# find /tmp \( -not -user root -a -not -name "f*" \) 找出/tmp目錄下,用戶屬主不是root,且 文件名不是以f開頭的文件
]# find /tmp -not \( -user root -o -name "f*" \) 不是用戶root 或 不以f開頭的文件
根據(jù)文件大小查找:
~]# find -size +10k
常用單位:k,m,g
find -size 10k 表示9k到10k之間 (9k,10k)在原有的數(shù)字上面-1
find -size +10k 表示10k以上不包括10 無(wú)限大(10k,∞)
find -size -10k 表示0k到9k 包括9k(0,9k)
根據(jù)時(shí)間戳:
以天為單位
~]# find -atime 5
find -atime 5 表示最近5天到6天 (5,6)在原有的數(shù)字上面+1
find -atime +5 表示5天以上,至無(wú)限大 (5,∞)
find -atime -5 表示0天到5天 (0-5)
-mtime
-ctime
以分鐘為單位
-amin
-mmin
-cmin
根據(jù)權(quán)查找:
-perm [/|-] 模式 精確的權(quán)限匹配
~]# find -perm 644
任何一類用戶的權(quán)限只要能包含對(duì)其指定的任何一位權(quán)限即可,或關(guān)系,+從7版本跟換為/ 表示或者 - 表示并且
find -perm 755 會(huì)匹配權(quán)相模式正好是755的文件
find -perm +222 匹配只要當(dāng)任意用戶都有寫權(quán)限時(shí)
find -perm -222 表示每一位中的權(quán)限小于等于2就匹配
find -perm -002 只有當(dāng)其他人(other)有寫權(quán)限時(shí),才會(huì)匹配
find -perm -666 包括666 650 550 111 等,但不包括766 等
find -perm +621 表示屬主有讀或者寫,或者屬組有寫,或者其他有執(zhí)行權(quán)限的都可以
-002 中的0表示不匹配屬主和屬組的權(quán)限,而不是說(shuō)屬主和屬組沒有任何的權(quán)限 0表示不關(guān)注
處理動(dòng)作:
例如 find -perm 222 -print
跟搜索條件的后綴
-print 默認(rèn)的處理動(dòng)作,顯示,打印到屏幕 ~]# find f1 -print -ls 默認(rèn)輸出打印顯示,不加也一樣
-ls 類似于對(duì)查找到的文件執(zhí)行 ls -l 命令 ~]# find f1 -ls
-delete 刪除查找到的文件 ~]# find f1 -delete 對(duì)查找到的文件直接刪除,不提示,擅用此命令
-fls /路徑文件/查找到的所有文件的長(zhǎng)格式信息保存至指定文件中 ~]# find f1 -fls /root/f1.log 這時(shí)會(huì)生成一個(gè)f1.log的文件 ,就是查到的命令導(dǎo)入一個(gè)指定文件內(nèi) ;同等與重定向文件
-ok 命令 {}\; 對(duì)查找的每個(gè)文件執(zhí)行由指定命令的命令
對(duì)于每個(gè)文件執(zhí)行命令之前都會(huì)交互式的要求用戶確認(rèn)
其中{}表示前面查找到的所有內(nèi)容引用 ~]# find f1 -ok rm {} \; 是否刪除引用前面的搜索內(nèi)容
-exec 命令 {}\; 對(duì)查找到的每個(gè)文件執(zhí)行由命令指定的命令 ,不提示用戶執(zhí)行 ~]# find f1 -exec rm {} \; 直接執(zhí)行 ,不提示
find 傳遞查找到的文件至后面指定的命令時(shí),查找到所有的符合條件的文件一次性傳遞給后面的命令
有些名看客不能接受過(guò)多參數(shù),此時(shí)命令執(zhí)行可能會(huì)失敗,
可以用這條命令規(guī)避此問(wèn)題 : find | xargs 命令
~]# find -name "*.sh" -exec cp {} {}.bak \;
將搜索.sh為結(jié)尾的文件進(jìn)行備份,添加.bak 擴(kuò)展名
~]# find /tmp -ctime +3 -user makangbo -ok rm {} \;
提示刪除存在時(shí)間超過(guò)3天以上的用戶makangbo的臨時(shí)文件
~]# find -perm -002 -exec chmod o-w {} \;
在家目錄中尋找可以被其他用戶寫入的文件
~]# find /home/ -type d -ls
搜索home下的 目錄文件
練習(xí)
1、查找/var目錄下屬主為root,且屬組為mail的所有文件
~]# find /var -user root -a -group mail
2、查找/var目錄下不屬于root、lp、gdm的所有文件
~]# find /var -not -user root -a -not -user lp -a -not -user gdm
~]# find /var -not \( -user root -o -user lp -o -user gdm \)
3、查找/var目錄下最近一周內(nèi)其內(nèi)容修改過(guò),同時(shí)屬主不為root,也不是xiaomag的文件
~]# find /var -mtime -7 -a -not -user root -a -user xiaomag
~]# find /var -mtime -7 -not \( -user root -o -user xiaomag\)
4、查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M,且最近一個(gè)周內(nèi)曾被訪問(wèn)過(guò)的文件
~]# find / -atime -30 \( -nouser -o -nogroup \)
5、查找/etc目錄下大于1M且類型為普通文件的所有文件
~]# find /etc -size +1M -type f
查找路徑, 根據(jù)大小查找大于1M,查找普通文件
6、查找/etc目錄下所有用戶都沒有寫權(quán)限的文件
~]# find /etc -not -perm +222 -ls
7、查找/etc目錄下至少有一類用戶沒有執(zhí)行權(quán)限的文件
~]# find /etc -not -perm -222 -ls
8、查找/etc/init.d目錄下,所有用戶都有執(zhí)行權(quán)限,且其它用戶有寫權(quán)限的文件
~]# find /etc/init.d/ -perm -113
解壓縮 和歸檔工具
早期有compress 和 uncompress ,對(duì)應(yīng)的是.Z結(jié)尾的壓縮格式文件,
gzip 和 gunzip 對(duì)應(yīng)的是.gz 結(jié)尾的壓縮格式文件
bizp2 和 bunzai2 對(duì)應(yīng)的是.bz結(jié)尾的壓縮格式文件
xz 和 nuxz 對(duì)應(yīng)的是.xz結(jié)尾的壓縮格式文件
zip 和 unzip 對(duì)應(yīng)的.zip結(jié)尾的壓縮格式文件
tar 歸檔
cpio 打包
compress 和 uncompress
語(yǔ)法 compress 選項(xiàng) 文件
compress file 壓縮文件 不保留原始的文件
compress -d file 解壓縮,同等于uncompress
compress -c file 將壓縮或解壓縮的結(jié)果輸出值標(biāo)準(zhǔn)輸出,保留原始文件 ~]# compress -c file > file.Z
compress -v file 顯示詳情
zcat file.Z >file 解壓縮 后綴是Z
gzip 和 gunzip
語(yǔ)法 gzip 選項(xiàng) 文件
gzip -# file #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:gzip -9 file
gzip -d file.gz 解壓縮文件 ,同等與解壓縮的命令gunzip
gzip -c file 將壓縮或解壓縮的結(jié)果輸出值標(biāo)準(zhǔn)輸出,保留原始文件
例如 gzip -c file > file.gz 重定向到文件,保留了原來(lái)的文件
gizp -r file 遞歸至目錄中對(duì)每個(gè)文件進(jìn)行壓縮
zcat file.gz >file 無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容 > 可以重定向文件
例如 gzip -c -d file.gz > /目標(biāo)路徑/file 壓縮文件后綴是gz
bzip2 和 bunzip2 /bzcat
語(yǔ)法 bzip2 選項(xiàng) 文件
bizp2 -# file #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:bzip2 -9 file
bzip2 -k file 壓縮后保留原文件
bzip2 -d file 解壓縮,同等于 bunzip2 壓縮文件后綴是bz2
bzcat /目標(biāo)路徑/file.bz2 無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容 > 可以重定向文件
xz /unxz /xzcat
語(yǔ)法 xz 選項(xiàng) 文件
xz -# file #為數(shù)字 指明壓縮比;1-9,默認(rèn)為6,數(shù)字越大,壓縮比越大 例如最大壓縮比:bzip2 -9 file
xz -k file 壓縮后保留原文件
xz -d file 解壓縮,同等于 bunzip2 壓縮文件后綴是xz
xzcat /目標(biāo)路徑/file.xz 無(wú)須顯示解壓縮查看壓縮文件的內(nèi)容 > 可以重定向文件
zip / unzip
打包壓縮
zip -r file路徑 源路徑
命令選項(xiàng) 生成路徑 源文件路徑 可以多個(gè)文件壓縮歸檔成單個(gè)文件 壓縮文件后綴是zip
解包解壓縮
unzip file
性能排行:xz ;bzip ; gzip 從高到底,但是經(jīng)常用的是gzip
歸檔工具
歸檔就是將多個(gè)文件打包為單個(gè)文件以便于管理,默認(rèn)的歸檔不會(huì)執(zhí)行壓縮
常用的工具有 tar ; cpio
語(yǔ)法 tar 選項(xiàng) file
創(chuàng)建歸檔tar
tar -c -f /PATH/TO/SOMEFILE.tar FILE
tar cf /PATH/TO/SOMEFILE.tar FILE
~]# tar -c -f /root/f2.tar f2 歸檔文件f2到f2.tar中
注意:歸檔不會(huì)刪除原文件
查看歸檔文件中的文件列表
~]# tar -t -f /root/f2.tar 查看f2.tar中的文件列表
展開歸檔
~]# tar -x -f /root/f2.tar
~]# tar -x -f /root/f2.tar -C /PATH/
結(jié)合壓縮工具實(shí)現(xiàn):歸檔并壓縮
-z gzip
后綴名:.tar.gz
歸檔并壓縮:tar-zcf ~]# tar -zcf /root/f3.tar.gz f3
展開歸檔:tar -zxf ~]# tar -zxf f3.tar.gz
-j bzip2
后綴名:.tar.bz2
歸檔并壓縮:tar -jcf ~]# tar -jcf /root/f3.tar.bz2 f3
展開歸檔:tar -jxf ~]# tar -jxf f3.tar.bz2
-J xz
后綴名:.tar.xz
歸檔并壓縮:tar -Jcf ~]# tar -Jcf /root/f3.tar.xz f3
展開歸檔:tar -Jxf ~]# tar -Jxf f3.tar.xz
注意:展開歸檔可以直接使用tar -xf 而無(wú)視指定對(duì)應(yīng)的壓縮工具選項(xiàng)
cpio 歸檔文件及從包中提取文件
cpio 命令是通過(guò)重定向的方式將文件進(jìn)行打包備份,還原恢復(fù)的工具,他可以解壓以.cpio 或者 .tar 結(jié)尾的文件
cpio 選項(xiàng) > 文件名或者設(shè)備名
cpio 選項(xiàng) < 文件名或者設(shè)備名
cpio -o 將文件拷貝打包成文件或者將文件輸出到設(shè)備上
cpio -i 解包,將打包文件解壓或?qū)⒃O(shè)備上的備份還原到系統(tǒng)
cpio -t 預(yù)覽,查看文件內(nèi)容或者輸出到設(shè)備上的文件內(nèi)容
cpio -v 顯示打包過(guò)程中的文件名稱
cpio -d 解包生成目錄,在cpio還原時(shí),自動(dòng)建立的目錄
cpio -c 一種比較新的存儲(chǔ)方式
舉例
將etc 目錄備份
~]# find /etc -print | cpio -ov >etc.cpio
搜索etc目錄下的文件打印輸出到設(shè)備 將文件拷貝打包過(guò)程中將文件輸出到設(shè)備 顯示文件名稱 重定向名稱
內(nèi)容預(yù)覽
~]# cpio -tv <etc.cpio
預(yù)覽輸出設(shè)備 顯示過(guò)程中的文件名稱
解包文件
~]# cpio -iv <etc.cpio
~]# cpio -idv <etc.cpio
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。