文件查找與解壓縮node
--------------------------------------------------------------------------------------------------------------正則表達式
模糊查找數據庫
locate 查詢系統上預建的文件索引數據庫 centos
依賴於事先構建的索引 app
索引的構建是在系統較爲空閒時自動進行(週期性任務),管理員手動更新數據庫(updatedb) ide
索引構建過程須要遍歷整個根文件系統,極消耗資源 工具
因爲依賴於updatedb,所以查找前須要updatedb指令再輸入locateui
locate命令centos7
locate KEYWORDspa
有用的選項
-i 不區分大小寫的搜索
-n N 只列舉前N個匹配項目
-r 使用正則表達式
示例
搜索名稱或路徑中帶有「conf」的文件:locate conf
使用Regex來搜索以「.conf」結尾的文件:locate -r ‘\.conf$’
精確查找
find
實時查找工具,經過遍歷指定路徑完成文件查找
工做特色:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具有讀取和執行權限的目錄
find [OPTION]... [查找路徑] [查找條件] [處理動做]
查找路徑:指定具體目標路徑;默認爲當前目錄
查找條件:指定的查找標準,能夠文件名、大小、類型、權限等標準進行;默認爲找出指定路徑下的全部文件
處理動做:對符合條件的文件作操做,默認輸出至屏幕
查找條件
指搜索層級
-maxdepth level 最大搜索目錄深度,指定目錄爲第1級
-mindepth level 最小搜索目錄深度
根據文件名和inode查找:
-name "文件名稱":支持使用glob
*, ?, [], [^]
-iname "文件名稱":不區分字母大小寫
-inum n 按inode號查找
-samefile name 相同inode號的文件
-links n 連接數爲n的文件
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不單單是文件名稱
根據屬主、屬組查找:
-user USERNAME:查找屬主爲指定用戶(UID)的文件
-group GRPNAME: 查找屬組爲指定組(GID)的文件
-uid UserID:查找屬主爲指定的UID號的文件
-gid GroupID:查找屬組爲指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
根據文件類型查找:
-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)
根據文件大小來查找:
-size [+|-]#UNIT
經常使用單位:k, M, G,c(byte)
#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纔會匹配(與)
只有當其它人(other)有寫權限時,find -perm -002纔會匹配
處理動做
-print:默認的處理動做,顯示至屏幕
-ls:相似於對查找到的文件執行「ls -l」命令
-delete:刪除查找到的文件
-fls file:查找到的全部文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每一個文件執行由COMMAND指定的命令,對於每一個文件執行命令以前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每一個文件執行由COMMAND指定的命令
{}: 用於引用查找到的文件名稱自身
find傳遞查找到的文件至後面指定的命令時,查找到全部符合條件的文件一次性傳遞給後面的命令
find 文件名 -type f 普通文件; find 文件或目錄 -empty 查找空文件或目錄; find...-exec 命令 {}\:對查找 到的文件執行命令
d 目錄文件; find /app -type d -empty 查找/app目錄下的空文件
l 目標連接文件; find -size 8M 結果爲(7M,8M}
s 套接字文件 find -size +8M 結果爲(8m,∞)
b 塊設備文件 find -size -8M 結果爲(0,8M)
c 字符設備文件 find -perm -644:檢查u:6和g:4和o:4的文件
p 管道文件 find -perm +644:檢查u:6或g:4或o:4的文件
參數替換xargs
因爲不少命令不支持管道|來傳遞參數,而平常工做中有這個必要,因此就有了xargs命令
xargs用於產生某個命令的參數,xargs 能夠讀入 stdin 的數據,而且以空格符或回車符將 stdin 的數據分隔成爲arguments
注意:文件名或者是其餘意義的名詞內含有空格符的狀況
有些命令不能接受過多參數,命令執行可能會失敗,xargs能夠解決
示例:
ls f* |xargs rm
find /sbin -perm +700 |ls -l 這個命令是錯誤的
find /sbin -perm +7000 | xargs ls –l
find和xargs格式:find | xargs COMMAND
壓縮、解壓縮及歸檔工具
file-roller
compress/uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar
cpio
compress/uncompress:.z後綴
gzip/gunzip:.gz後綴
bzip2/bunzip2/bzcat:.bz2後綴
xz/unxz/xzcat:.xz後綴
zip/unzip:.zip後綴
tar工具
tar(Tape ARchive,磁帶歸檔的縮寫)
tar [OPTION]...
(1) 建立歸檔
tar -cpvf /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
-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」或者「.tar」結尾的文件
將etc目錄備份:find ./etc -print |cpio -ov >etc.cpio
內容預覽cpio –tv < etc.cpio
解包文件cpio –idv < etc.cpio