文件查找與壓縮-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
下一篇 2016-08-15

相關推薦

  • keepalived實戰之小試牛刀

    keepalived是什么 keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似于heartbeat,用來防止單點故障。 keepalived工作原理 keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。 虛擬路由冗余協議,可以認為是實現路…

    Linux干貨 2017-06-24
  • 文件查找命令之find

    文件查找命令之find   特點:實時查找,精確查找,由于find是全磁盤文件查找所有查找速度要比locate略慢一些。   find查找功能強大,下面主要介紹find查找條件的一個重要特性–德·摩根定律     德·摩根定律      非(A &&B)=(非A…

    Linux干貨 2016-08-16
  • 用shell腳本實現每天定時收集全網日志到一臺服務器

    需求 現在公司有這樣一個需求,需要收集每天全網運行業務的設備上的某個特定目錄底下的日志到一臺服務器(這臺服務器我們簡稱logserver),這并在這臺logserver上生成以日期為名字的目錄 解決思路: 在logserver的crontab里設置兩個腳本,在當日晚上23:30執行腳本1收集當日即將被刪除的全網腳本;在并在早上8:30執行腳本2,收集昨日全網…

    Linux干貨 2015-07-27
  • shell編程——讓你又愛又恨的東西

    變量類型:      不同的數據類型在系統中所占資源不同,并且表示的范圍也不同      數值型:          短整型short:      &…

    Linux干貨 2016-08-12
  • 用戶及權限管理

    新建用戶用到的相關文件/etc/default/useradd /etc/login.defs /etc/skel/* 批量創建用戶1.創建用戶列表user.txt(文件格式同/etc/passwd) 2.newusers user.txt 3.創建密碼文件passwd.txt(格式  用戶名:密碼) 4.cat passwd.txt | chpa…

    Linux干貨 2016-08-11
  • 二叉樹的應用詳解 – 數據結構

    概述: 平衡樹——特點:所有結點左右子樹深度差≤1 排序樹——特點:所有結點“左小右大字典樹——由字符串構成的二叉排序樹判定樹——特點:分支查找樹(例如12個球如何只稱3次便分出輕重)帶權樹——特點:路徑帶權值(例如長度) 最優樹——是帶權路徑長度最短的樹,又稱 Huffman樹,用途之一是通信中的壓縮編碼。 1. 二叉排序樹(二叉查找樹 Bina…

    Linux干貨 2015-04-07
欧美性久久久久