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
下一篇 2016-08-18

相關推薦

  • linux基礎學習-第六天

    2016-08-02 授課內容: 用戶和組管理命令 理解并設置文件權限 默認權限 特殊權限 文件ACL 用戶和組管理命令 用戶和組的配置文件:/etc/default/useradd(相當于useradd -D)、/etc/skel(創建用戶的家目錄配置文件)、/etc/login.defs(修改用戶的密碼策略配置) /etc/default/useradd…

    Linux干貨 2016-08-04
  • MHA+keepalived 高可用MYSQL集群

    一、MHA簡介 二、試驗環境及要求 三、部署MHA 四、測試MHA集群功能 一、MHA簡介     MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案。在MySQL故障切換過程中,MHA能做到在0~30秒之內手動或自動(結合腳本)完成數據庫的故障切換操作,并且在…

    2017-02-25
  • DHCP簡單闡述及配置實現方法

    DHCP是什么…… DHCP是Dynamic Host Configuration Protocol的縮寫,它是TCP/IP協議簇中的一種,主要是用來給網絡客戶機分配動態的IP地址。 其主要功能是: 用于內部網絡或網絡服務供應商自動分配IP地址給用戶 用于內部網絡管理員作為對所有電腦作中央管理的手段 直接點就是,這些被…

    Linux干貨 2016-12-05
  • 第六周作業 bash編程學得好痛苦啊,啊啊啊~~需要挺??!

    請詳細總結vim編輯器的使用并完成以下練習題 VIM很強大,但是萬變不離其宗,最核心的三模式以下圖表示: 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、復制/boot/grub/grub.conf至/…

    Linux干貨 2016-12-19
  • N21-第五周

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; # grep "^[[:space:]]\+" /etc/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; # grep&nbs…

    Linux干貨 2016-08-15
  • Linux系統程序包管理工具-RPM

    一、rpm是什么 RPM 是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是開放式的。RPM包管理器(RPM)是一個強大的命令行驅動的包管理系統能夠安裝、卸載、驗證、查詢和更新計算機軟件包。每個軟件包包括存檔的文件連同包和它的版本信息,描述等。還有一個庫API,允…

    Linux干貨 2015-11-19

評論列表(1條)

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

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

欧美性久久久久