文件查找與解壓縮

                                                           文件查找與解壓縮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

相關文章
相關標籤/搜索