文件查找與壓縮-1

   1、 locate命令(非實時查找即數據庫查找)

1)、查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db

     依賴于事先構建的索引;索引的構建是在系統較為空閑時自動進行( 周期性任務) 或者管理員手動更新數據庫即是執行#updatedb命令;引構建過程需要遍歷整個根文件系統,極消耗資源;

     工作特點:查找速度快、模糊查找、非實時查找、搜索的是文件的全路徑-不僅僅是文件名、可能只搜索用戶具備讀取和執行權限的目錄

2)、locate KEYWORD

     有用的選項

? -i 執行不區分大小寫的搜索

? -n X 只列舉前X 個匹配項目

#locate foo

? 搜索名稱或路徑中帶有“foo ”的文件

#locate -r ‘\.foo$’

? 使用Regex來搜索以“.foo”結尾的文件

2、find命令(實時查找,通過遍歷指定路徑完成文件查找)

1)、工作特點:查找速度略慢、精確查找、實時查找、可能只搜索用戶具備讀取和執行權限的目錄

2)、find [OPTION]… [ 查找路徑] [ 查找條件] [ 處理動作]

(查找的是符合指定條件的查找路徑各目錄層級下的文件)

查找路徑:指定具體目標路徑,也即是查找范圍,默認為當前目錄

查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行,默認為找出指定路徑下的所有文件

處理動作:對符合條件的文件作出操作,默認輸出至屏幕

3)、查找條件

     ①、根據文件名和inode(#ll -i命令可以查看文件的inode) 查找:

-name " 文件名稱" :支持使用glob通配符*, ?, [], [^]等等

    例如#find / -name *checkint*

-iname " 文件名稱" :不區分字母大小寫

-inum n :按inode號查找

-samefile name :相同inode號的文件

-links n :鏈接數為n的文件

-regex "PATTERN" :以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

         例如#find /root/bin –regex “.*\.sh$”

    ②、根據屬主、屬組查找:

-user USERNAME :查找屬主為指定用戶(UID)的文件

-group GRPNAME : 查找屬組為指定組(GID)的文件

-uid UserID :查找屬主為指定的UID號的文件

-gid GroupID :查找屬組為指定的GID號的文件

-nouser :查找沒有屬主的文件

-nogroup :查找沒有屬組的文件

③、根據文件類型查找:

-type TYPE

f: 普通文件

d: 目錄文件

l: 符號鏈接文件

s:套接字文件

b: 塊設備文件

c: 字符設備文件

p: 管道文件

④、根據文件大小來查找:

-size [+|-]#UNIT

常用單位:k, M, G

#UNIT: (#-1, #] ,如:6k

-#UNIT :[0,#-1], 如:-6k

+#UNIT :(#, ∞ ), 如:+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才會匹配,不關注屬主和屬組是否具有寫權限

    4)、組合條件

    與:-a

    或:-o

    非:-not, !

    德·摩根 定律:

    非(P 且 Q) = (非 P) 或 (非 Q)

    非(P 或 Q) = (非 P) 且 (非 Q)

    !A -a !B = !(A -o B)

    !A -o !B = !(A -a B)

    示例:

    找出/tmp 目錄下,屬主不是root ,且文件名不是fstab 的文件

    #find /tmp \( -not -user root -a -not -name 'fstab' \) -ls

    #find /tmp -not \( -user root -o -name 'fstab' \) –ls

小括號要進行轉義

    排除目錄(查找路徑/etc,如果是/etc/sane.d目錄下的全部剪除,否則查找查找 .conf結尾的文件)

    # find /etc -path "/etc/sane.d" -a -prune -o -name "*.conf"  -print

    5)、處理動作

-print:默認的處理動作,顯示至屏幕;

   -ls:類似于對查找到的文件執行“ls -l” 命令

   -delete:刪除查找到的文件;

   -fls file:查找到的所有文件的長格式信息保存至指定文件中

      例如[root@centos7 ~]# find -name data -fls fi

   -ok COMMAND {} \;對查找到的每個文件執行由COMMAND 指定的命令,但是對于每個文件執行命令之前,都會交互式要求用戶確認

-exec COMMAND {} \;對查找到的每個文件執行由COMMAND 指定的命令

   {}:上面的大括號用于引用查找到的文件名稱自身

   find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性遞給后面的命令,有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題

find | xargs COMMAND

示例如下:

#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 / -nouser -o –nogroup –atime -7 | xargs chmod o+x

   6)、壓縮、解壓縮及歸檔工具

     ①、compress [-dfvcVr] [-b maxbits] [file …]

         #compress file ,把file壓縮為file.Z,同時原file不再存在

-d: 解壓縮,相當于uncompress,原文件不再存在

例如#compress -d file.Z ,把file.Z解壓縮為file,同時file.Z不再存在

-c: 結果輸出至標準輸出即是屏幕, 不刪除原文件

   例如#compress -c file > file.Z

-v: 顯示詳情

        uncompress 解壓縮

        zcat file.Z >file

其中#zcat file.Z 直接打印于屏幕

# zcat file.Z >file把file.Z定向解壓為file,同時不刪除file.Z原文件

     ②、gzip [OPTION]… FILE …

-d: 解壓縮,相當于gunzip,原文件不再存在

例如[root@centos7 testdir]# gzip fstab messages,結果是fstab.gz、messages.gz

    [root@centos7 testdir]# gzip fstab.gz、messages.gz,結果是fstab messages

 

-c: 將壓縮或解壓縮的結果輸出至標準輸出,不刪除原文件

-#:1-9 ,指定壓縮比,值越大壓縮比越大

        zcat :不顯式解壓縮的前提下查看文本文件內容

        實例:

gzip -c messages > messages.gz

gzip -c -d messages.gz > messages

zcat messages.gz > messages

③、bzip2 [OPTION]… FILE …

-k: keep,保留原文件

-d:解壓縮

-#:1-9,壓縮比,默認為6

    bzcat:不顯式解壓縮的前提下查看文本文件內容

     例如#bzcat messages.bz2 > messages 如果不重定向,則會打印于屏幕上

④、xz [OPTION]… FILE …

-k: keep,保留原文件

-d :解壓縮

-# :1-9,壓縮比,默認為6

    xzcat: 不顯式解壓縮的前提下查看文本文件內容

⑤、zip/unzip

打包壓縮

#zip -r sysconfig.zip sysconfig/,即是把sysconfig/打包壓縮為sysconfig.zip

#zip messages會提示錯誤,因為zip不能直接壓縮單個文件

    解包解壓縮

#unzip sysconfig.zip

#cat /var/log/messages | zip message –

#cat /var/log/messages | zip message.zip –,用于壓縮單個文件,生成壓縮文件message.zip

#unzip -p message > message,重定向輸出到message,否則不顯式解壓縮的前提下查看文本文件內容



練習題:

1 、查找/var 目錄下屬主為root ,且屬組為mail 的所有文件

#find /var –user root -group mail -ls

2 、查找/var 目錄下不屬于root 、lp 、gdm 的所有文件

#find /var ! \(-user root -o -user lp -o -user gdm\) -ls

#find /var ! -user root !-user lp ! -user gdm -ls

其中第一條命令中括號要進行轉義

3 、查找/var 目錄下最近一周內其內容修改過,同時屬主不為root ,也不是postfix 的文件

#find /var mtime -7 ! -user root ! -user postfix –ls

4 、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

#find / -nouser -o –nogroup –atime -7 | xargs ls –ld

#find / \(-atime -7 -nouser -o -nogroup\) –ls

#find / -atime -7 -nouser -o -nogroup -ls 缺少括號不能達到題目要求

5 、查找/etc 目錄下大于1M 且類型為普通文件的所有文件

#find /etc -size +1M –type f –ls

#find /etc -size +1M -size -10M –type f -ls

6 、查找/etc 目錄下所有用戶都沒有寫權限的文件

#find /etc !-perm /222 –ls

7 、查找/etc 目錄下至少有一類用戶沒有執行權限的文件

#find /etc ! -perm -111 -ls

8 、查找/etc/init.d 目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

#find /etc/init.d/ -perm -113 –ls

因為/etc/init.d是鏈接目錄,所以命令中要寫成/etc/init.d/的形式








原創文章,作者:18612763863,如若轉載,請注明出處:http://www.www58058.com/35858

(0)
1861276386318612763863
上一篇 2016-08-15 14:31
下一篇 2016-08-15 14:31

相關推薦

  • grep、正則表達式

    grep、正則表達式 grep:文本過濾(模式:pattern)工具 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行。 模式:由正則表達式字符及文本字符所編寫的過濾條件。 正則表達式:由一類特殊字符及文本所編寫的模式,其中有些字符不表示字符字面意義,而表示控制或通配的功能。 正則表達式分為兩類:基本正則表達式、擴展正則表…

    Linux干貨 2017-04-06
  • 【N25第五周作業】find命令以及相關練習

    find: 實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找; 工作特性: 查找速度略慢; 精確查找; 實時查找; 用法: find [OPTIONS]  [查找起始路徑]  [查找條件]  [處理動作] 查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄; 查找條件:…

    Linux干貨 2016-12-27
  • 建立私有CA的方法

    建立私有CA的方法 建立私有CA的工具:     OpenCA     Openssl 證書申請及簽署步驟:     1,生成申請請求:     2,RA核驗;    &…

    Linux干貨 2016-09-19
  • 8月5號 練習+作業

    1,找出ifconfig 命令結果中本機的所有IPv4 地址 [root@localhost ~]# ifconfig |tr -cs '[:digit:].' '\n' |sort -t. -k3 |tail&nbsp…

    Linux干貨 2016-08-07
  • 磁盤管理

    1、設備文件 設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信 設備號碼: 主設備號major number,標識設備類型 次設備號minor number,標識同一類型下的不同設備 [root@localhost ~]# ll /dev/sd* brw-rw—-. 1 root disk 8,  0 Aug 25 …

    Linux干貨 2016-09-01
  • 帶你走進PI的世界-Raspbian Pi上實現LAMP

     初識   Raspbian PI                   前段時間,出于興趣,入手一個樹莓派(Raspbian PI…

    Linux干貨 2016-01-05
欧美性久久久久