Linux 第十天: Linux文件查找和壓縮

 

Linux 第十天: Linux文件查找和壓縮

 

 

                使用Linux的時候, 經常需要查找文件, 在Linux中, 有很多方法可以做到這一點. 常用的有find 和locate命令, 有些情況也可以使用whereis和which命令, 下面主要介紹一下find 和locate命令

 

 

locate  非實時查找(數據庫查找) /var/lib/mlocate/mlocate.db
locate -i 執行區分大小寫的搜索
locate -n N 只列舉前N個匹配項目
locate foo 搜索名稱或路徑中帶有"foo"的文件
locate -r '\.foo$'使用Regex來搜索以".foo"結尾的文件

 

 

find -name " 文件名稱"支持使用glob *, ?, [], [^]
find -iname" 文件名稱"不區分字母大小寫
find -inumn 按inode號查找
find -samefilename 相同inode號的文件
find -links n 鏈接數為n的文件
find -regex "PATTERN" 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

 

 

find -user USERNAME 查找屬主為指定用戶(UID)的文件
find -group GRPNAME 查找屬組為指定組(GID)的文件
find -uidUserID 查找屬主為指定的UID號的文件
find -gidGroupID 查找屬組為指定的GID號的文件
find -nouser 查找沒有屬主的文件
find -nogroup 查找沒有屬組的文件

 

 

find -type f: 普通文件
find -type d: 目錄文件
find -type l: 符號鏈接文件
find -type s: 套接字文件
find -type b: 塊設備文件
find -type c: 字符設備文件
find -type 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 -name snow.png 搜索名為snow.png的文件
find -iname snow.png 不分大小寫搜索文件
find -user joe -group joe 搜索 用戶joe 組群joe 的文件

 

找出/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" -print

 

-size [+|-]#UNIT 根據文件大小來查找 常用單位k, M, G
#UNIT: (#-1, #] 6k 表示(5k,6k]
-#UNIT[0,#-1] -6k 表示[0,5k]
+#UNIT(#,∞)  +6k 表示(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 只有當每個人都有寫權限
find-perm-002   只有當其它人(other)有寫權限

 

 

-print 默認的處理動作,顯示至屏幕;
-ls 類似于對查找到的文件執行"ls -l"命令
-delete 刪除查找到的文件;
-flsfile 查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令{}: 用于引用查找到的文件名稱自身
find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
find | xargsCOMMAND

 

 

實例示范
find -name "*.conf" -exec cp {} {}.org \;備份配置文件,添加.orig這個擴展名
find/tmp-ctime+3-userjoe-okrm{}\; 提示刪除存在時間超過3天以上的joe的臨時文件
find~-perm-002 -execchmodo-w{}\; 在你的主目錄中尋找可被其它用戶寫入的文件
find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} \;
find /home –type d -ls

 

 

compress [-dfvcVr] [-b maxbits] [file …]
-d: 解壓縮,相當于
-c: 結果輸出至標準輸出,不刪除原文件
-v: 顯示詳情
uncompress解壓縮
zcatfile.Z>file

 

gzip[OPTION]… FILE …
-d: 解壓縮,相當于gunzip
-c: 將壓縮或解壓縮的結果輸出至標準輸出
-#1-9,指定壓縮比,值越大壓縮比越大
zcat不顯式解壓縮的前提下查看文本文件內容
gzip-c messages >messages.gz
gzip-c -d messages.gz > messages
zcatmessages.gz > messages

 

bzip2 [OPTION]… FILE …
-k: keep, 保留原文件
-d解壓縮
-#1-9,壓縮比,默認為6
bzcat不顯式解壓縮的前提下查看文本文件內容

 

xz[OPTION]… FILE …
-k: keep, 保留原文件
-d解壓縮
-#1-9,壓縮比,默認為6
xzcat: 不顯式解壓縮的前提下查看文本文件內容

 

打包壓縮
zip –r sysconfigsysconfig/
解包解壓縮
unzip sysconfig.zip
cat /var/log/messages | zip message –
unzip -p message > message

 

tar [OPTION]…
(1) 創建歸檔
tar -c -f /PATH/TO/SOMEFILE.tar FILE…
tar cf/PATH/TO/SOMEFILE.tar FILE…
(2) 查看歸檔文件中的文件列表
tar -t -f /PATH/TO/SOMEFILE.tar
(3) 展開歸檔
tar -x -f /PATH/TO/SOMEFILE.tar
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
結合壓縮工具實現歸檔并壓縮
-j: bzip2, -z: gzip, -J: xz

 

cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以".cpio"或者".tar"結尾的文件。
cpio[選項] > 文件名或者設備名
cpio[選項] < 文件名或者設備名
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-i 解包,將打包文件解壓或將設備上的備份還原到系統
-t 預覽,查看文件內容或者輸出到設備上的文件內容
-v 顯示打包過程中的文件名稱。
-d 解包生成目錄,在cpio還原時,自動的建立目錄
-c 一種較新的存儲方式

 

 

find ./etc-print |cpio-ov>etc.cpio 將etc目錄備份
cpio–tv< etc.cpio內容預覽
cpio–iv <etc.cpio要解包文件
cpio–idv <etc.cpio

 

 

 

查找/var目錄下屬主為root 且屬組為mail的所有文件
find  /var/ -user root -group mail

 

查找/var目錄下不屬于root lp gdm的所有文件
find /var/ -not \(-user root -o -user jane -o -user jane\)

 

查找/var目錄下最近一周修改過內容 且屬主不為root 也不是postfix的文件
find /var/ -mtime -7 \(-not -user root -a -not group postfix)

 

查找當前系統上沒有屬主或屬組, 且最近一周被訪問過的文件
find  / \(-nouser -o -nogroup\) -atime -7

 

查找/etc目錄下大于1M且類型為普通文件的所有文件
find /etc/ -size +1M -type f

 

查找/etc目錄下所有用戶都沒有寫權限的文件
find /etc/ -perm -not -perm /222

 

查找/etc目錄下至少有一類用戶沒有執行權限的文件
find /etc/ -not \(-perm /200 -perm /020 -perm /002\)

 

查找/etc/init.d目錄下 所有用戶都有執行權限 且其它用戶有寫權限的文件
find /etc/init.d/ -perm -111 -perm -002

 

 

 

 

 

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

(0)
dengjiandengjian
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相關推薦

  • 馬哥教育網絡班第21期+第六周課程作業

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的1、以至少一個空白字符開頭的行的行首加#; :%s@^[[:space:]]\+@#@   2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; :%s@^[[:space…

    Linux干貨 2016-08-22
  • 馬哥教育網絡20期+第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s/^[[:space:]]/#&/ 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白…

    Linux干貨 2016-07-07
  • N28-第一周

    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別。
    3. 描述Linux的哲學思想,並按照自己的理解對其進行解釋性描述。
    4.說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,並配合相應的示例來闡述。
    5.如何在Linux系統上獲取命令的幫助信息,請詳細列出,並描述man文檔的章節是如何劃分的?
    6.請羅列Linux發行版的基礎目錄名稱命名法則及功能規定。

    Linux干貨 2017-12-04
  • rsyslog應用舉例

    rsyslog+mysql+loganalyzer 1、yum install mariadb-server php-gd rsyslog-mysql ##連接到mysql需要的驅動程序,用來保存信息 2、登錄數據庫并給rsyslog賦權,設置密碼,重讀授權表 3、以rsyslog用戶身份登錄數據庫,此時創建Syslog庫,注意此處數據庫名稱要與rsyslo…

    Linux干貨 2016-10-23
  • FHS文件系統各目錄功能

        FHS文件系統各目錄功能 前言                  FHS (Files system Hiserarchy Standard)…

    Linux干貨 2016-10-17
  • 開始學習總結的一些基本知識點

       第一VNC軟件(面授班課堂用的),這款軟件采用C/S架構(client/sever客戶端和服務器端)還有VNC協議(virtual Network computing虛擬網絡計算)協議。雖說這款軟件對網絡班沒有實際用途,但自己了解下這款軟件的構成也是不錯的。    第二開始學習需要的虛擬機軟件其中包括VMWARE…

    Linux干貨 2016-10-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-18 15:23

    總結的很詳細,需要有個引文,就是說為什么有文件查找,文件壓縮,不然直接上來列一些命令會太突兀了,這里需要修改一下。

欧美性久久久久