文件查找
在文件系統上查找符合條件的文件;
文件查找: locate, find
非實時查找(數據庫查找): locate
實時查找: find
一、locate
查詢系統上預建的文件索引數據庫
/var/lib/mlocate/mlocate.db
依賴于事先構建的索引;
索引的構建是在系統較為空閑時自動進行(周期性任務);管理員手動更新數據庫(updatedb);
索引構建過程需要遍歷整個根文件系統,極消耗資源;
工作特點:
查找速度快;
模糊查找;
非實時查找
搜索的是文件的全路徑,不僅僅是文件名
可能只搜索用戶具備讀取和執行權限的目錄
locate命令
locate KEYWORD
有用的選項、
-i 執行區分大小寫的搜索
-n X 只列舉前X個匹配項目
locate foo
搜索名稱或路徑中帶有“ foo”的文件
locate -r ‘\.foo$’
使用Regex來搜索以“ .foo”結尾的文件
二、find
實時查找工具,通過遍歷指定路徑完成文件查找;
工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄
語法:
find [OPTION]… [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
查找條件
根據文件名和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: 管道文件
組合條件:
與: -a
或: -o
非: -not, !
德·摩根定律:
非(P 且 Q) = (非 P) 或 (非 Q)
非(P 或 Q) = (非 P) 且 (非 Q)
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
例: find -not -perm -111 -a -not -type f 等于 find -not \( -perm -111 -o -type f\)
find -not -name "wang" -o -not -size 10M 等于 find -not \( -name "name" -a -size 10M \)
[root@www ~]# find /sh.log/ -name *.sh /sh.log/cheskdisk.sh /sh.log/createuser.sh /sh.log/sumid.sh .... 搜索sh.log目錄下名字里有.sh的文件 [root@www ~]# find /wang/ -iname *.sh /wang/jiaoben2.sh /wang/jiaoben1.sh /wang/laowang.Sh /wang/wang.sH 不分大小寫的搜索sh.log目錄下名字里有.sh的文件 [root@www ~]# find / -user wang -ls -a -group wang -ls 131 0 drwx------ 2 wang wang 79 Aug 11 15:05 /home/wang 131 0 drwx------ 2 wang wang 79 Aug 11 15:05 /home/wang 132 4 -rw-r--r-- 1 wang wang 18 Nov 20 2015 /home/wang/.bash_logout 132 4 -rw-r--r-- 1 wang wang 18 Nov 20 2015 /home/wang/.bash_logout 133 4 -rw-r--r-- 1 wang wang 193 Nov 20 2015 /home/wang/.bash_profile 133 4 -rw-r--r-- 1 wang wang 193 Nov 20 2015 /home/wang/.bash_profile 134 4 -rw-r--r-- 1 wang wang 231 Nov 20 2015 /home/wang/.bashrc 134 4 -rw-r--r-- 1 wang wang 231 Nov 20 2015 /home/wang/.bashrc 135 4 -rw------- 1 wang wang 413 Aug 12 06:02 /home/wang/.bash_history 135 4 -rw------- 1 wang wang 413 Aug 12 06:02 /home/wang/.bash_history 搜索/下用戶和組都屬wang的文件 [root@www ~]# find /wang/ -not \( -user wang -o -name jiaoben* \) -ls 882 0 drwxr-xr-x 2 root root 97 Aug 13 01:38 /wang/ 696024 4 -rwxrwxrwx 1 root root 16 Aug 11 11:21 /wang/file2 696000 0 -r---w---x 1 root root 0 Aug 11 23:36 /wang/file1 697357 0 -rw-r--r-- 1 root root 0 Aug 13 01:38 /wang/laowang.Sh 697360 0 -rw-r--r-- 1 root root 0 Aug 13 01:38 /wang/wang.sH 搜索/wang目錄下不是屬主是wang,名字里不包含jiaoben的文件 [root@www ~]# find /etc/ -path '/etc/sane.d' -a -prune -o -name *.conf -print /etc/resolv.conf /etc/pki/ca-trust/ca-legacy.conf /etc/yum/pluginconf.d/fastestmirror.conf /etc/yum/pluginconf.d/langpacks.conf /etc/yum/protected.d/systemd.conf /etc/yum/version-groups.conf /etc/yum/yum-cron-hourly.conf /etc/yum/yum-cron.conf /etc/lvm/lvm.conf /etc/lvm/lvmlocal.conf /etc/dracut.conf /etc/depmod.d/dist.conf /etc/libuser.conf /etc/audit/auditd.conf ... 搜索/etc/下排除/etc/sane.d目錄的名字中含有.conf的文件
根據文件大小來查找:
-size [+|-]#UNIT
常用單位: k, M, G
#UNIT: (#-1, #],
例:6k表示6k-5k
-#UNIT: [0,#-1],
例:-6k表示0k-5k
+#UNIT: (#,∞),
例:+6k表示6k以上
根據時間戳:
以“天”為單位;
-atime [+|-]#,
#: [#,#+1)
例:10表示10天-11天
+#: [#+1,∞]
例:+10表示11天以上
-#: [0,#)
例:-10表示0天-10天
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系, + 從centos7開始淘汰
-MODE:每一類對象都必須同時擁有指定權限,與關系
0 表示不關注
find -perm 755 會匹配權限模式恰好是755的文件
只要當任意人有寫權限時, find -perm +222就會匹配(/centos7,+centos6)或者的關系。
只有當每個人都有寫權限時, find -perm -222才會匹配,并行的關系
只有當其它人( othwer)有寫權限時, find -perm -002才會匹配
處理動作
-print:默認的處理動作,顯示至屏幕;
-ls:類似于對查找到的文件執行“ ls -l”命令
-delete:刪除查找到的文件;
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;
對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令
{}: 用于引用查找到的文件名稱自身
find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
find | xargs COMMAND
find 實例
find -name “*.conf” -exec cp {} {}.org \;
備份配置文件,添加.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
[root@www wang]# ll total 12 -r---w---x. 1 root root 0 Aug 11 23:36 file1 -rwxrwxrwx. 1 root root 16 Aug 11 11:21 file2 -rwxr-xr-x. 1 root root 337 Aug 13 00:54 jiaoben1.sh -rw-r--r--. 1 root root 345 Aug 13 01:14 jiaoben2.sh -rw-r--r--. 1 root root 0 Aug 13 01:38 laowang.Sh -rw-r--r--. 1 root root 0 Aug 13 01:38 wang.sH [root@www wang]# find /wang/ -perm 644 -exec chmod 755 {} \; [root@www wang]# ll total 12 -r---w---x. 1 root root 0 Aug 11 23:36 file1 -rwxrwxrwx. 1 root root 16 Aug 11 11:21 file2 -rwxr-xr-x. 1 root root 337 Aug 13 00:54 jiaoben1.sh -rwxr-xr-x. 1 root root 345 Aug 13 01:14 jiaoben2.sh -rwxr-xr-x. 1 root root 0 Aug 13 01:38 laowang.Sh -rwxr-xr-x. 1 root root 0 Aug 13 01:38 wang.sH
三、Gnome 搜索工具
位置->搜索文件……
圖形化搜索工具,可搜索
命令
內容
用戶/組群
大小
修改時間
四、壓縮、解壓縮及歸檔工具
file-roller
compress/uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar
cpio
compress/uncompress
壓縮后綴.z
compress [-dfvcVr] [-b maxbits] [file …]
-d: 解壓縮,相當于
-c: 結果輸出至標準輸出,不刪除原文件
-v: 顯示詳情
uncompress 解壓縮
zcat file.Z >file 解壓縮
[root@www compression]# ll total 10128 -rw-r--r--. 1 root root 10369933 Aug 13 03:49 testfile [root@www compression]# compress -c testfile > testfile.Z [root@www compression]# ll total 11688 -rw-r--r--. 1 root root 10369933 Aug 13 03:49 testfile -rw-r--r--. 1 root root 1595043 Aug 13 03:59 testfile.Z
gzip/gunzip
壓縮后綴.gz
gzip [OPTION]… FILE …
-d: 解壓縮,相當于gunzip
-c: 將壓縮或解壓縮的結果輸出至標準輸出
-#: 1-9,指定壓縮比,值越大壓縮比越大
zcat:不顯式解壓縮的前提下查看文本文件內容
[root@www compression]# gzip -c testfile > testfile.gz [root@www compression]# ll total 11960 -rw-r--r--. 1 root root 10369933 Aug 13 03:49 testfile -rw-r--r--. 1 root root 276566 Aug 13 04:03 testfile.gz -rw-r--r--. 1 root root 1595043 Aug 13 03:59 testfile.Z
bzip2/bunzip2/bzcat
壓縮后綴.bz2
bzip2 [OPTION]… FILE …
-k: keep, 保留原文件
-d:解壓縮
-#: 1-9,壓縮比,默認為6
bzcat:不顯式解壓縮的前提下查看文本文件內容;
[root@www compression]# bzip2 -k testfile [root@www compression]# ll total 12196 -rw-r--r--. 1 root root 10369933 Aug 13 03:49 testfile -rw-r--r--. 1 root root 238536 Aug 13 03:49 testfile.bz2 -rw-r--r--. 1 root root 276566 Aug 13 04:03 testfile.gz -rw-r--r--. 1 root root 1595043 Aug 13 03:59 testfile.Z
xz/unxz/xzcat
壓縮后綴.xz
xz [OPTION]… FILE …
-k: keep, 保留原文件;
-d:解壓縮
-#: 1-9,壓縮比,默認為6;
xzcat: 不顯式解壓縮的前提下查看文本文件內容;
[root@www compression]# xz -k testfile [root@www compression]# ll total 12308 -rw-r--r--. 1 root root 10369933 Aug 13 03:49 testfile -rw-r--r--. 1 root root 238536 Aug 13 03:49 testfile.bz2 -rw-r--r--. 1 root root 276566 Aug 13 04:03 testfile.gz -rw-r--r--. 1 root root 110664 Aug 13 03:49 testfile.xz -rw-r--r--. 1 root root 1595043 Aug 13 03:59 testfile.Z
zip/unzip
壓縮目錄
zip –r 壓縮生成文件路徑 要壓縮目錄的路徑
解壓目錄
unzip sysconfig.zip 默認解壓到當前目錄下
壓縮文件
zip 要壓縮的文件 壓縮文件名
unzip -p message > message
五、tar歸檔
tar [OPTION]…
創建歸檔
tar -c -f /PATH/TO/SOMEFILE.tar FIL文件查找
tar cf /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
六、cpio
復制 從或到文件
cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以“ .cpio”或者“ .tar”結尾的文件。
cpio [選項] > 文件名或者設備名
cpio [選項] < 文件名或者設備名
選項
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-i 解包,將打包文件解壓或將設備上的備份還原到系統
-t 預覽,查看文件內容或者輸出到設備上的文件內容
-v 顯示打包過程中的文件名稱。
-d 解包生成目錄,在cpio還原時,自動的建立目錄
-c 一種較新的存儲方式
[root@www ~]# find /etc -print |cpio -o &> /wang/etc.cpio [root@www ~]# ll -h /wang/etc.cpio -rw-r--r--. 1 root root 19M Aug 13 04:50 /wang/etc.cpio
內容預覽
cpio –tv < etc.cpio
要解包文件
cpio –iv <etc.cpio
cpio –idv < etc.cpio
原創文章,作者:DYW,如若轉載,請注明出處:http://www.www58058.com/36558
find命令是筆試中??嫉闹R點,需要多加練習,熟練掌握。