文件查找
腳本文件名的查詢
which(尋找執行文件)
-
which [-a] command
-a :將所有由PATH目錄中可以找到的命令均列出,而不只是第一個被找到的命令名稱
文件名的查找
文件查找:
實時查找:遍歷所有文件進行條件匹配;(find)
非實時查找:根據索引查找;(whereis、locate)
whereis
-
whereis [-bmsu] [-BMS directory… -f] filename…
-b :只找二進制格式的文件
-m :只找在說明文件路徑下的文件
-s:只找source源文件
-u :查找不在上述三個選項當中的其他特殊文件
locate
-
locate [-ir] keyword
-i:忽略大小寫的差異
-r:后面可接正則表達式
-n N 只列舉前N個匹配的項目locate -r “.*.sh”
locate -n 10 passwd
locate -i baoding -
updatedb:根據/etc/updatedb.conf的設置去查找系統硬盤內的文件,并更新/var/lib/mlocate內的數據庫文件
注:locate查找數據并非實時的,如果要查找一些比較新的內容,其實是會找不到;可以使用updatedb去更新mlocate.db
/tmp/目錄下不適用
find
find [option]… [查找路徑] [查找條件] [處理動作]
查找路徑:默認為當前路徑
查找條件:默認為指定路徑下的所有文件
處理動作:默認為顯示至屏幕
-
查找條件
-
-name “文件名稱”:可使用通配符 : * 、?、 [] 、[^]
find . -name “????.log”
-iname 文件名稱忽略大小寫
find . -iname “baoding.log”
-inum n 根據inode來查找 (基本不用)
find . -inum 1179826
-samefile name 查找相同inode號的文件,其實等于查找硬鏈接(基本不用)
-links n 根據鏈接數
find . -links 2
-regex 使用正則表達式的方法匹配文件名
find /etc/ -regex “.*\.sh$” -
根據文件的屬主和屬組查找:
-user -group -uid -gid
-nouser 查找沒有屬主的文件或者目錄
-nogroup 查找沒有屬組的文件或者目錄
測試方法:新建一個ash用戶,然后把一個文件的屬主和屬組改成ash
然后再刪除ash用戶 -
-type TYPE:根據文件類型查找
f 普通文件
d 目錄
l 鏈接文件
s 套接字文件
b 塊設備
c 字符設備
p 管道 -
根據文件大小來查找
-
-size [+|-] # UNIT
#UNIT: #-1 < x <= # ;(#-1,#]
-#UNIT: x <= #-1 ; (-∞,#-1]
+# UNIT : x > # ; (#,+∞)
-
-size [+|-] # UNIT
-
根據時間戳查找
-
以 “天” 為單位
-atime [+|-] #
#: # <= x < #+1 ;[#,#+1)
-: x < # ; (-∞,#)
+#: x >= #+1 ; [#+1,+∞)
-mtime
-ctime
-mtime +7 7天以前的 從第8天開始
-mtime 7 當前時間往前推第7天
-mtime -7 當前時間往前推第7天以內
–10–9–8 7——5—3–2—1
mtime +7 | mtime 7| mtime -7 |-
以分鐘為單位 -amin -cmin(比較少用)
-mmin +7 -7 7
-
以 “天” 為單位
-
根據權限來查找
-
-perm [+|-] MODE
MODE :與MODE精確匹配
+MODE :任一類用戶的權限只能包含對其指定的任何一位權限即可;為‘或’關系;CentOS 6為+、CentOS 7為/
-MODE :每類用戶指定的檢查權限都匹配,為三類用戶所有指定的檢查權限都能能夠被包含;為‘與’關系
注:+020:中的0表示不匹配屬主和其他位的權限,而不是說屬主和其他位沒有任何權限
-
-perm [+|-] MODE
-
組合條件:
與:-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示例:查找/etc/下面所有的目錄:
查找目錄是 /etc/
要求排除 /etc/sane.d
查找.conf 文件
find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name “.conf” -print
當查找到/etc/sane.d的時候 :前面的條件為真(’/etc/sane.d’ -a -prune)
或后面的條件就不會執行(-name “.conf”)
當查找到其他目錄的時候 :前面的條件為假 (’/etc/sane.d’ -a -prune)
或后面的會執行 (-name “.conf”)
a && b || c
a 和b 都為真的時候 則 a && b 為真,然后后面c就不會執行
a 或者b 有一個為假,則 a && b 為假,然后后面的c就會執行
-
-name “文件名稱”:可使用通配符 : * 、?、 [] 、[^]
-
處理動作
-
-print 打印到屏幕上
-ls 打印到屏幕上 類似于ls -l
-delete 刪除操作 只刪除文件,不能刪除非空目錄
-fls file 查找到的文件信息保存到指定的文本中
-ok COMMAND在執行后面的動作之前會提示你是否需要執行(交互式的)
-exec COMMAND {} \; 執行后面的命令 {} 表示前面find出的結果 \; 固定用法
-
-print 打印到屏幕上
生產經常使用方式:
1、刪除 find /logs/ -name “.log” -mtime +7 | xargs rm 監控告警 (磁盤告警)
find /logs/ -name “.log” -size +20G | xargs rm 應用日志
2、備份 find /apps/data/ -name “” -exec cp {} /backup/ \;
3、查找 find /apps/ -name “.log” | xargs grep -i “error” 日志里面找錯誤
文件解壓縮
- 壓縮的作用:節省空間、節省帶寬
-
壓縮工具:
compress/uncompress,其對應的是.Z結尾的壓縮格式文件;
gzip/gunzip,其對應的是.gz結尾的壓縮格式文件;
bzip2/bunzip2,其對應的是.bz2結尾的壓縮格式文件;
xz/unxz,其對應的是.xz結尾的壓縮格式文件;
zip/unzip,其對應的是.zip結尾的壓縮格式文件;
compress/uncompress
-
安裝: yum install ncompress
compress file :會生產file.Z壓縮文件,同時會刪除源文件
compree -c file > file.Z :將壓縮結果輸出到標準屏幕上,可以一個(壓縮)文件,從而達到生產壓縮文件,同時保留源文件
compress -d :解壓縮 .Z格式結尾的壓縮文件 === uncompress
zcat file.Z 直接查看壓縮文件的內容不用先解壓縮
gzip/gunzip
gazip [OPTIONS] /PATH/TO/SOMEFILE…
-
-# 指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多;文件比較小的話,使用gzip越壓縮越大
-d 解壓縮 == gunzip
-c 將壓縮或者解壓縮結果輸出到屏幕
-r 遞歸至目錄中對每個文件進行壓縮
nginx gzip on
gzipminlength 1k;超過多大的文件(1K)才會壓縮,否則,越壓縮越大;
zcat file.gz 直接查看壓縮文件的內容不用先解壓縮
bzip2/bunzip2
bzip2 [OPTIONS] /PATH/TO/SOMEFILE…
-
-#:指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多
-d :解壓縮 == bunzip2
-k :(keep)壓縮后保留源文件
zcat file.bz2 直接查看壓縮文件的內容不用先解壓縮
xz/unxz
xz [OPTIONS] /PATH/TO/SOMEFILE…
-
-#:指明壓縮比:1-9,默認是6;壓縮比越高,耗費CPU資源也多
-d :解壓縮 == bunzip2
-k :(keep)壓縮后保留源文件
zcat file.bz2 直接查看壓縮文件的內容不用先解壓縮
zip/unzip
zip ZIP_FILE.zip /PATH/TO/SOMEFILE… 打包壓縮(可以壓縮目錄)
-
-r 遞歸壓縮
-p 將壓縮結果輸出屏幕上
unzip 解壓縮:unzip ZIP_FILE.zip
歸檔工具
歸檔就是將多個文件打包為單個文件以便管理,默認的歸檔不會執行壓縮
常用的工具:tar、cpio
tar
tar [OPTION…] [FILE]…
-
tar 打包工具,將多個目錄打包成一個文件
-c 打包 創建打包文件(歸檔);歸檔不會刪除源文件
-f 指定打包的文件名;(-f filename 必須放在一起)
-r 將文件追加至歸檔文件中
-t 不解壓的情況下直接查看歸檔文件里面的內容
-x 執行解壓縮;(通常與 -v(顯示解壓縮過程) -f結合使用)
-C 解壓到指定目錄下
其他:
-p 保留備份數據的原本權限與屬性,常用于備份(-c)重要的配置文件
-P 打包的時候保留絕對路徑,即允許備份數據中含有根目錄存在
–exclude=File 在壓縮過程中,排除File這個文件 -
歸檔并壓縮
-
-j: bzip2
tar -j -c -f xiongan3.tar.bz2 xiongan
tar -jcf xiongan3.tar.bz2 xiongan
tar jcf xiongan3.tar.bz2 xiongan (通常使用) -
-z: gzip壓縮
tar zcvf xiongxian.tar.gz xiongxian
生產經常使用的gzip
tar zcf xiongxian.tar.gz xiongxian
帶目錄:
tar zcf xiongan.tar.gz xiongxian
tar zcf xiongan.tar.gz xiongxian/*
不帶目錄:
cd xiongxian
tar zcf xiongan.tar.gz ./*tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
/root/includefilelist 里面包含的是要壓縮的文件列表
/root/excludefilelist 里面寫的是不要壓縮的文件列表-
-J :xz 壓縮
tar Jcvf xiongan5.tar.xz xiongan
-
注:展開歸檔可以直接使用tar -xf,而無需為其指定對應的壓縮工具選項;
cpio
-
-o 壓縮
-i 解壓縮
find ./etc -print |cpio -ov >etc.cpio
cpio –tv < etc.cpio
cpio –iv
cpio –idv < etc.cpio
原創文章,作者:s,如若轉載,請注明出處:http://www.www58058.com/72765
你上周的三篇文章主要介紹了vim,find命令的詳細用法,包括grep與正則表達式方面的內容,基本把學過的內容都總結了出來了。寫的很詳細,第一篇與第二篇排版有些問題(需要注意文字段的縮進),文件查找與壓縮解壓縮這篇文章寫的還是非常不錯的,繼續努力就好。