Linux13--檔案查詢與壓縮、管道
阿新 • • 發佈:2022-04-08
1 檔案查詢
# find命令: 在linux系統中,按照我們的要求去查詢檔案 # 1.格式: find [查詢的路徑] [匹配模式] [匹配規則] # 2.匹配模式: -name:按檔名去匹配 -type:按檔案型別匹配 常見檔案型別: f:普通檔案 d:普通資料夾 b:塊裝置檔案 c: 字元裝置檔案 s:socket檔案 l:連結檔案 -perm :按檔案許可權匹配 -user :按檔案屬主匹配 -nouser:查詢沒有屬主的檔案 # 即屬主使用者被刪除了的檔案 -group :按檔案屬組匹配 -nogroup:查詢沒有屬組的檔案 -size:按檔案大小匹配 + 查詢超過n的檔案 - 查詢小於n的檔案 -mtime:按檔案的修改時間匹配 -ctime:按檔案的建立時間匹配 -atime:按檔案的訪問時間匹配 + n 查詢n天前的檔案 - n 查詢n天內的檔案 -a:並且 # and 預設 -o:或者 # or -exec:處理 匹配之後的內容 # xargs # 3.匹配規則 (結合正則匹配) * : 匹配任意數量的任意字元(匹配零個或多個任意字元) ? : 匹配任意一個字元 # 補充: # 常見的檔案許可權: 755:資料夾的預設許可權 644:檔案的預設許可權 # 刪除使用者及使用者組 刪除使用者 :userdel # -r 徹底刪除 刪除使用者組 :groupdel # 檢視檔案的各種時間 stat
查詢案例
# 1.查詢出/etc目錄下的hosts檔案 find /etc -name "hosts" # 2.查詢出/etc目錄下的以ifcfg開頭的檔案 find /etc/ -name "ifcfg*" # 3.查詢出/etc目錄下以.conf結尾的檔案 find /etc/ -name "*.conf" # 4.查詢出/etc目錄下,檔名中包含host的檔案有哪些 find /etc/ -name "*host*" # 5.查詢出/etc目錄下,所有的普通檔案。 find /etc/ -type f # 6.查詢出/etc目錄下,所有的資料夾 find /etc/ -type d # 7.查詢出/dev/目錄中的所有的塊裝置檔案 find /dev/ -type b # 8.查詢出/dev目錄中所有的字元裝置檔案 find /dev/ -type c # 9.查詢出/etc目錄中檔名包含nginx的普通檔案 find /etc/ -name "*nginx*" -type f # 10.查詢出/root目錄下,許可權為755的檔案 find /root/ -perm 755 # 11.查詢出屬主為test01的檔案 find /root/ -user test01 # 12.查詢屬主被刪除了的檔案 find /root/ -nouser # 13.查詢屬組為test的檔案 find /root/ -group test # 14.查詢屬組被刪除了的檔案 find /root/ -nogroup # 15.查詢2天以前修改過的檔案 find /root/ -mtime +2 # 16.查詢2天以內建立的檔案 find /root/ -ctime -2 # 17.查詢2天以內訪問過的檔案 find /root/ -atime -2 # 18.查詢大於1M的檔案 find /root/ -size +1M # 19.查詢小於1M的檔案 find /root/ -size -1M # 20.查詢在3天以內建立的檔案,並刪除 find /tmp/ -ctime -3 -type f -exec rm -rf {} \; -exec :處理查詢之後的內容 {} :代表的是查詢到的內容、 \; : 固定搭配 find /tmp/ -ctime -3 -type f | xargs -I {} rm -rf {} # 21.將所有3天前建立的普通檔案加上.bak字尾 find /tmp -ctime -3 -type f -exec mv {} {}.bak \; find /tmp -ctime -3 -type f | xargs -I {} mv {} {}.bak # 補充: xargs :將所有內容格式化成一行 xargs -I {} :將所有內容格式化成一行,且放進{}中,其他命令就可以從{}中取出內容,進行命令執行 因為前一個命令執行的結果可能包含換行,且將執行結果作為第二個命令引數傳遞時,命令就不能執行(有些命令執行時,引數不能有換行) 所以可以通過xargs將引數過濾,將換行換成空格
2 壓縮軟體
1.gzip
# gzip
壓縮軟體,將檔案做成一個壓縮包,會刪除原來的檔案,生成一個新的壓縮包檔案
# 格式:
壓縮:gzip [檔案路徑]
解壓:gzip -d [壓縮包路徑]
# 缺點:
gzip不能壓縮目錄
2.bzip2
# bzip2 壓縮軟體,將檔案做成一個壓縮包,會刪除原來的檔案,生成一個新的壓縮包檔案 # 格式: 壓縮:bzip2 [檔案路徑] 解壓:bzip2 -d [壓縮包路徑] # 缺點: bzip2不能壓縮目錄 # 比較 gzip 比 bzip2壓縮率更大
3.tar 常用
# tar
打包檔案或目錄,不會刪除原檔案,也不會壓縮檔案;
但可以跟gzip或bzip2共同使用,進行打包和壓縮
# 格式:
tar [必要引數] [選擇引數] [壓縮包名稱] [原檔案或目錄]
# 必要引數:
-f: 指定壓縮包的名稱
-c: 打包檔案 # 小寫
-z: 指定使用gzip壓縮,一般使用gzip壓縮的檔案都以.tar.gz作為副檔名
-j: 指定使用bzip2壓縮,一般使用bzip2壓縮的檔案都以.tar.bz2作為副檔名
-x: 解壓,不需要指定壓縮包的壓縮型別,會自動匹配壓縮包的型別自行解壓
-v: 顯示壓縮包壓縮的過程
-P: 當壓縮包中存在根目錄時,自動移除根目錄 # 大寫
-t: 檢視壓縮包中的內容
# 注:引數共同使用時,f放在最後,緊跟壓縮包名稱
# 選擇引數:
-C: 解壓到指定目錄 # 大寫
# eg:
# 打包並壓縮一個檔案(使用gzip壓縮)
tar -zcvf rumenz.tar.gz rumenz.txt
# tar.gz解壓縮到/tmp目錄
tar -xzvf rumenz.tar.gz -C /tmp
# 列出壓縮包裡面的內容
tar -ztvf rumenz.tar.bz2 rumenz.txt
# 注:
由於我們使用gzip壓縮的rumenz.tar.gz,
所以要查閱rumenz.tar.gz包內的檔案時,就得要加上z這個選項了
# 將/etc目錄中的所有普通檔案壓縮成/tmp/etc.tar.gz檔案
tar -czvPf /tmp/etc.tar.gz $(find /etc/ -type f | xargs)
# 補充:$():相當於數學中的括號,優先看括號中的內容,再執行tar
4.zip 常用
壓縮檔案或資料夾
# 安裝壓縮與解壓命令
yum -y install zip unzip
# 壓縮
zip [選項] 壓縮包名 原始檔或源目錄列表
-r 遞迴壓縮
-m 將檔案壓縮之後,刪除原始檔案 # 相當於把檔案移到壓縮檔案中
-v 顯示詳細的壓縮過程資訊
eg: zip -r etc.zip /etc
# 解壓
unzip [引數] 壓縮包名
-d 目錄名 將壓縮檔案解壓到指定目錄下
-n 解壓時,不覆蓋已經存在的檔案
-o 解壓時,覆蓋已經存在的檔案,並且無需使用者確認
-v 檢視壓縮檔案的詳細資訊,包括壓縮包中的檔案大小、檔名以及壓縮比等,但是不解壓
-t 檢查壓縮檔案是否正確、完整,但並不解壓
# eg:
zip -r tmp.zip /tmp
unzip tmp.zip
zip install.log.zip install.log
unzip install.log.zip
3 管道
用於傳輸資料,將管道前的命令執行結果,交給管道之後的命令進行處理
# 格式:
|
# 案例
# 1.刪除/tmp目錄下,一天以內建立的檔案
find /tmp/ -ctime -1 -type f | xargs -I {} rm -rf {}
# 2.將etc中所有的普通檔案,複製到/tmp目錄中
find /etc/ -type f | xargs -I {} cp -r {} /tmp/