文件查找
locate勤晚,模糊查找,非實時查找(數據庫查找)
find:實時查找
locate
- 查詢系統(tǒng)上預建的文件索引數據庫
/var/lib/mlocate/mlocate.db,此數據庫每天更新一次院喜,也可手動更新數據庫(updatedb)
- 依賴于事先構建的索引
索引的構建是在系統(tǒng)較為空閑時自動進行( 周期性 任務)夺荒,管理員手動更新數據庫(updatedb)- 索引構建過程需要遍歷整個根文件系統(tǒng)脚牍,極消耗資源
- 工作特點:
? 查找速度 快
? 模糊查找
? 非實時查找
? 搜索的是文件的全路徑凉袱,不僅僅是文件名
? 可能只搜索用戶具備讀取和執(zhí)行權限的目錄
- locate命令:
locate KEYWORD
可用的選項
? -i 不區(qū)分大小寫的搜索
? -n N 只列舉前N 個匹配項目
locate conf
? 搜索名稱或路徑中帶有“conf ”的文件
locate -r ‘.conf$’
? 使用Regex 來搜索以“.conf ”結尾的文件
find
實時查找工具闷板,通過遍歷指定路徑完成文件查找
工作特點:? 查找速度略慢
? 精確查找
? 實時查找
? 可能只搜索用戶具備讀取和執(zhí)行權限的目錄
語法:
find [OPTION]... [ 查找路徑] [ 查找條件] [ 處理動作]
- 查找路徑:指定具體目標路徑逗柴;默認為當前目錄
- 查找條件:指定的查找標準蛹头,可以文件名、大小戏溺、類型渣蜗、權限等標準進行;默認為找出指定路徑下的所有文件
- 處理動作:對符合條件的文件做操作旷祸,默認輸出至屏幕
- 查找條件:
指定搜索層級
-maxdepth level 最大搜索目錄深度, 指定目錄為第1級 級
-mindepth level 最大搜索目錄深度
根據文件名和inode 查找:
-name " 文件名稱" :支持使用glob
*, ?, [], [^]耕拷,通配符需要加“ ”
-iname " 文件名稱" :不區(qū)分字母大小寫
-inum n 按inode 號查找
-samefile name 相同inode 號的文件
-links n 鏈接數為n 的文件
-regex "PATTERN" :以PATTERN 匹配整個文件路徑字符串,而不僅僅是文件名稱
查找.sh結尾的文件
-
根據屬主托享、屬組查找:
-user USERNAME :查找屬主為指定用戶(UID) 的文件
-group GRPNAME: 查找屬組為指定組(GID) 的文件
-uid UserID :查找屬主為指定的UID 號的文件
-gid GroupID :查找屬組為指定的GID 號的文件
-nouser :查找沒有屬主的文件
-nogroup :查找沒有屬組的文件 根據文件類型查找:
-type TYPE:
? f: 普通文件
? d: 目錄文件
? l: 符號鏈接文件
? s :套接字文件
? b: 塊設備文件
? c: 字符設備文件
? p: 管道文件
組合條件: 優(yōu)先級順序:not>a>o
與:-a
或:-o
非:-not, !
德· 摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
find示例:
find -user joe -not -group joe
find -user joe -o -user jane
find -not \( -user joe -o -user jane \)
find / -user joe -o -uid 500
找出/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”
find /etc (–path ‘/etc/sane.c’ –o –path ’/etc/fonts’ ) -a -prune –o name “.conf”
- 根據文件大小來查找
-size [+|-]#UNIT
常用單位:k, M, G 赃绊,c (byte)
#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT :[0,#-1]
如:-6k 表示[0,5k]
+#UNIT :(#, ∞ )
如:+6k 表示(6k ,∞ )
查找大于1M小于10M的文件
- 根據時間戳:
以“天”為單位;
-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 :類似于對查找到的文件執(zhí)行“l(fā)s -l” 命令
-delete :刪除查找到的文件
-fls file :查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執(zhí)行由 COMMAND指定的命令档痪,對于每個文件執(zhí)行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執(zhí)行由COMMAND 指定的命令
{}: 用于引用查找到的文件名稱自身
find 傳遞查找到的文件至后面指定的命令時邢滑,查找到所有符合條件的文件一次性傳遞給后面的命令
xargs
參數替換xargs
由于很多命令不支持管道|來傳遞參數腐螟,而日常工作中有這個必要,所以就有了xargs 命令
xargs 用于產生 某個命令的參數困后,xargs入可以讀入 stdin 的數據乐纸,并且以空格符或回車符將stdin的數據分隔 成為arguments
注意:文件名或者是其他意義的名詞內含有空格符 的情況
有些命令不能接受過多參數,命令執(zhí)行 可能會失敗摇予,xargs可以解決
示例:
ls f* |xargs rm
find /sbin -perm +700 |ls -l 這個命令是錯誤的
find /sbin -perm +7000 | xargs ls –l
find 和xargs 格式:find | xargs COMMAND
- find示例
find -name “*.conf” -exec cp {} {}.orig \;
備份配置文件汽绢,添加.orig 這個擴展名
find /tmp -ctime +3 -user joe -ok rm {} \;
提示刪除存在時間超過3天以上的joe 的臨時文件
find ~ -perm -002 -exec chmod o-w {} \;
在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
find /home –type d -ls
壓縮、解壓縮及歸檔工具
file-roller 應用在圖形界面
compress/uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar
cpio
- compress/uncompress
compress [-dfvcVr] [-b maxbits] [file ...]
-d: 解壓縮侧戴,相當于uncompress
-c: 結果輸出至標準輸出, 不刪除原文件
-v: 顯示詳情
uncompress 解壓縮
zcat file.Z >file
- gzip/gunzip
gzip [OPTION]... FILE ... 壓縮同時刪除原文件
-d: 解壓縮宁昭,相當于gunzip
-c: 將壓縮或解壓縮的結果輸出至標準輸出
-# :1-9 ,指定壓縮比酗宋,值越大壓縮比越大
zcat :不顯式解壓縮的前提下查看文本文件內容
實例:
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
- bzip2/bunzip2/bzcat
bzip2 [OPTION]... FILE ...
-k: keep, 保留原文件
-d :解壓縮
-# :1-9 积仗,壓縮比,默認為6
bzcat :不顯式解壓縮的前提下查看文本文件內容
- xz/unxz/xzcat
xz [OPTION]... FILE ...
-k: keep, 保留原文件
-d :解壓縮
-# :1-9 蜕猫,壓縮比寂曹,默認為6
xzcat: 不顯式解壓縮的前提下查看文本文件內容
- zip/unzip
打包壓縮
zip –r app/sysconfig /etc/sysconfig/ 將/etc/sysconfig 目錄打包壓縮為app/sysconfig
解包解壓縮
unzip sysconfig.zip
cat /var/log/messages | zip messages -
unzip -p message > message
tar工具
Tar (Tape ARchive ,磁帶歸檔的 縮寫)
tar [OPTION]...
-c: 建立壓縮檔案
-C 解壓到指定文件
-x:解壓
-t:查看內容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件-c:打包
-f: 使用檔案名字回右,切記隆圆,這個參數是最后一個參數,后面只能接檔案名翔烁。 這個參數是必須的
-z:有gzip屬性的
-j:有bz2屬性的
-J:xz屬性
-Z:有compress屬性的
-v:顯示所有過程
-O:將文件解開到標準輸出
- 創(chuàng)建歸檔
tar -c -f /PATH/TO/SOMEFILE.tar FILE...- 追加文件至歸檔: 注:不支持對壓縮文件追加
tar -r -f /PATH/TO/SOMEFILE.tar FILE...- 查看歸檔文件中的文件列表
tar -t -f /PATH/TO/SOMEFILE.tar- 展開歸檔
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/- 結合壓縮工具實現:歸檔并壓縮
-j: bzip2, -z: gzip, -J: xz
將文件解壓縮到/tmp下
- -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命令可以復制文件到歸檔包中租漂,或者從歸檔包中復制文件
cpio 命令是通過重定向的方式將文件進行打包備份阶女,還原恢復的工具,它可以解壓以“.cpio或者“.tar” 結尾的文件哩治。
cpio [ 選項] > 文件名或者設備名
cpio [ 選項] < 文件名或者設備名
選項
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-i 解包秃踩,將打包文件解壓或將設備上的備份還原到系統(tǒng)
-t 預覽,查看文件內容或者輸出到設備上的文件內容
-v 顯示打包過程中的文件名稱业筏。
-d 解包生成目錄憔杨,在cpio 還原時,自動的建立目錄
-c 一種較新的存儲方式
示例:
將etc 目錄備份:
find ./etc -print |cpio -ov >etc.cpio
內容預覽
cpio –tv < etc.cpio
要解包文件
cpio –idv < etc.cpio