Linux 第十天: (08月15日) Linux文件查找和壓縮

Linux 第十天: (08月15日) Linux文件查找和壓縮

 

 

 

 

locate  非實時查找(數據庫查找) /var/lib/mlocate/mlocate.db
locate -i 執行區分大小寫的搜索
locate -n N 只列舉前N個匹配項目
locate foo 搜索名稱或路徑中帶有"foo"的文件
locate -r '\.foo$'使用Regex來搜索以".foo"結尾的文件

 

 

find -name " 文件名稱"支持使用glob *, ?, [], [^]
find -iname" 文件名稱"不區分字母大小寫
find -inumn 按inode號查找
find -samefilename 相同inode號的文件
find -links n 鏈接數爲n的文件
find -regex "PATTERN" 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

 

 

find -user USERNAME 查找屬主爲指定用戶(UID)的文件
find -group GRPNAME 查找屬組爲指定組(GID)的文件
find -uidUserID 查找屬主爲指定的UID號的文件
find -gidGroupID 查找屬組爲指定的GID號的文件
find -nouser 查找沒有屬主的文件
find -nogroup 查找沒有屬組的文件

 

 

find -type f: 普通文件
find -type d: 目錄文件
find -type l: 符號鏈接文件
find -type s: 套接字文件
find -type b: 塊設備文件
find -type c: 字符設備文件
find -type p: 管道文件

 

 

組合條件
與-a
或-o
非-not , !

德.摩根定律
(非P) 或(非Q)= 非(P 且Q)
(非P) 且(非Q) = 非(P 或Q)
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find -name snow.png 搜索名爲snow.png的文件
find -iname snow.png 不分大小寫搜索文件
find -user joe -group joe 搜索 用戶joe 組羣joe 的文件

 


找出/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" -print

 


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

 


根據時間戳
以"天"爲單位;
-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 只有當每個人都有寫權限
find -perm-002   只有當其它人(other)有寫權限

 

 

-print 默認的處理動作,顯示至屏幕;
-ls 類似於對查找到的文件執行"ls -l"命令
-delete 刪除查找到的文件;
-flsfile 查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;對於每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令{}: 用於引用查找到的文件名稱自身
find 傳遞查找到的文件至後面指定的命令時,查找到所有符合條件的文件一次性傳遞給後面的命令
有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
find | xargsCOMMAND

 

 

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

 

 

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

 


gzip[OPTION]... FILE ...
-d: 解壓縮,相當於gunzip
-c: 將壓縮或解壓縮的結果輸出至標準輸出
-#1-9,指定壓縮比,值越大壓縮比越大
zcat不顯式解壓縮的前提下查看文本文件內容
gzip-c messages >messages.gz
gzip-c -d messages.gz > messages
zcatmessages.gz > messages

 


bzip2 [OPTION]... FILE ...
-k: keep, 保留原文件
-d解壓縮
-#1-9,壓縮比,默認爲6
bzcat不顯式解壓縮的前提下查看文本文件內容

 


xz[OPTION]... FILE ...
-k: keep, 保留原文件
-d解壓縮
-#1-9,壓縮比,默認爲6
xzcat: 不顯式解壓縮的前提下查看文本文件內容

 


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

 


tar [OPTION]...
(1) 創建歸檔
tar -c -f /PATH/TO/SOMEFILE.tar FILE...
tar cf/PATH/TO/SOMEFILE.tar FILE...
(2) 查看歸檔文件中的文件列表
tar -t -f /PATH/TO/SOMEFILE.tar
(3) 展開歸檔
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
結合壓縮工具實現歸檔並壓縮
-j: bzip2, -z: gzip, -J: xz

 


cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以".cpio"或者".tar"結尾的文件。
cpio[選項] > 文件名或者設備名
cpio[選項] < 文件名或者設備名
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-i 解包,將打包文件解壓或將設備上的備份還原到系統
-t 預覽,查看文件內容或者輸出到設備上的文件內容
-v 顯示打包過程中的文件名稱。
-d 解包生成目錄,在cpio還原時,自動的建立目錄
-c 一種較新的存儲方式

 

 

find ./etc-print |cpio-ov>etc.cpio 將etc目錄備份
cpio–tv< etc.cpio內容預覽
cpio–iv <etc.cpio要解包文件
cpio–idv <etc.cpio

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章