初學Linux之文件查找和壓縮

使用locate命令 ,使用find命令 ,壓縮和解壓縮工具

文件查找和壓縮

之前,我們已經了解了系統的中有關文件創建,文件和目錄的復制,目錄創建,目錄刪除等相關的命令,但是很多時候,這些操作,都是需要指定文件的絕對路徑的(相對于根目錄的路徑),如果我們只知道文件或者目錄本身的名稱,但是不知道,文件以及目錄的上級目錄的名稱時,或者,我們需要查找一個歷史文件所在的位置,這個情況下,我們可以使用文件查找相關的命令搜尋到我們需要的信息,并直接顯示在屏幕上,以便我們進行獲取使用。

文件查找工具有兩個:locate 和 find 。文件查找命令分為非實時查找和實時查找,非實時查找是根據索引查找的,索引不是自動生成的,是需要提前建立的,若是很長時間沒有建立索引目錄,那么文件查找過程就不會準確。實時查找是從磁盤的指定目錄,遍歷目錄下的所有文件進行文字匹配,將匹配的項進行反饋的查找方式。

使用locate命令

locate 命令屬于非實時查找,需要對整個文件系統中的文件預先構建索引。系統中有周期性的任務,及時且自動的創建索引,若是,需要當前重新建立索引,可以使用 updatedb 命令構建索引,這個過程是遍歷根目錄下的所有的文件的,一般會比較占用系統的資源,耗費比較多的時間,建議在系統比較空閑的時間進行操作,同時,系統中周期性任務就是在空閑時段更新索引的。

locate 工具的特點包括:查找文件速度快;精度有所欠缺;同時是模糊形式的查找;搜索的是文件的全路徑,不僅僅是文件名,下面是locate 命令的具體用法。

捕獲

使用find命令

find 命令查找工具是實時精確的搜索,會對指定的目錄中,所有的文件進行匹配。所以它的特點是:查找速度慢,但是有較高的準確率。

find 和locate 這兩個命令在特性中是相互補充的,都是非常的實用,但是,對應命令的使用者來說,一些沒有權限訪問的目錄,find 和 locate 可能是逃過查找的 ,這一點在使用中需要注意。

find 命令的使用語法:

find ? [選項]? [查找路徑] ? [查找條件]? [處理動作]

查找路徑:指定具體目標路徑;若是沒有指定,默認是對當前目錄下可訪問文件進行查詢

查找條件:指定的查找要求,比如文件名要求,大小要求,文件類型要求,權限要求,時間屬性要求。這個缺省的情況下,是指沒有要求,默認是顯示所有的文件。

處理動作:當查找出符合要求的文件后,可以同時指定對文件進行某些操作,缺省的情況下,是將搜索的結果標準輸出到屏幕。

查找路徑直接寫目錄的絕對路徑即可,比較復雜的是查找條件,處理動作相對復雜,這里分別進行說明。

一、查找條件(單橫線連接)

1、指定搜索層級(目錄最后面不要加斜線)

-maxdepth? n ? 這個是指最大搜索目錄深度,指定目錄為第1級,也可以理解為查找到第n層

-mindepth ? n ? 最小搜索目錄深度,可以理解為,從第n層開始進行查找

2、指定文件名稱和inode 進行查找

-name “文件名稱”:支持使用glob?? *, ?, [], [^]

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

-inum n 按inode號查找

-samefile name 相同inode號的文件

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

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

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

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

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

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

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

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

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

4、根據文件類型查找:

-type TYPE:

  • f: 普通文件
  • d: 目錄文件
  • l: 符號鏈接文件
  • s:套接字文件
  • b: 塊設備文件
  • c: 字符設備文件
  • p: 管道文件

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

-size [+|-]#UNIT

  • 常用單位:k, M, G,c(byte)
  • #UNIT: (#-1, #]?? 如:? -size ?? 6k 表示(5k,6k] ? 理解為“接近 6k ”大小的 ,
  • -#UNIT:[0,#-1]?? 如:-size ? -6k 表示 [0,5k] ?? 大小小于“接近 6k” 范圍的
  • +#UNIT:(#,∞)?? 如:? -size? +6k 表示(6k,∞) ?? 大小大于“ 接近 6k ”范圍的
  • 注意:根據文件大小查找,不應該是查找確定的數字,因為不同的單位(unit)之間是更小單位的范圍的,所以指定數字本身有范圍確認的功能。

捕獲

6、根據時間戳:

以“天”為單位; ?? atime是代表(Access time)

-atime [+|-]#,

  • #: [#,#+1) ? ? ?? 如 :-atime? 1 ?? 理解為昨天之前第1天(24小時)。不包括昨天
  • +#: [#+1,∞] ? ? 如:-atime +1 ? 昨天之前第1天,之前的所有時間
  • -#: [0,#) ? ? ? ? ? 如: -atime -1 ? 當前時間到昨天之前第1天,

-mtime? 表示(Modify time) ? -ctime? 表示(Change time)

注意:在時間上進行判斷時,是向前進行推算的。

以“分鐘”為單位:???? -amin???? -mmin???? -cmin

捕獲

7、根據權限查找:

-perm [/|-]MODE

MODE 是權限的數字表示法

  • MODE: 精確權限匹配
  • /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配 即可,或關系,+ 從centos7開始淘汰
  • -MODE:每一類對象都必須同時擁有指定權限,與關系

有三個數字,分別對應 user ,group ,other 的權限,數字0表示,權限不關心

7、多條件的組合使用

組合條件:
與:-a
或:-o
非:-not, !
? 德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
? 示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find -not \( -user joe -o -user jane \)

find /etc/httpd ! \( -regex .*conf\.. -o -not -name conf \)

find /etc/httpd -not \( -regex .*conf\.. -o ! -name conf \)

查找/etc/下,除/etc/sane.d和/etc/fonts兩個目錄的其它所有.conf后綴的文件
find? /etc? \(–path ‘/etc/sane.d’? –o –path? ‘/etc/fonts’? \) ? -a -prune –o -name “*.conf”

目錄進行剪切操作是,順序進行的(先掃描文件夾),剪切了就不會進入了,所以剪切掉的文件夾中什么都不會出現。

多個條件使用的情況下,默認是且的關系

二、處理動作

-print:默認的處理動作,顯示至屏幕(缺省默認)

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

-delete:刪除查找到的文件

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

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

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

{}: 用于引用查找到的文件名稱自身

find傳遞查找到的文件至后面指定的命令時,查找到所有符合 條件的文件一次性傳遞給后面的命令 ,xargs用于產生某個命令的參數,xargs 可以讀入 stdin 的數 據,并且以空格符或回車符將 stdin 的數據分隔成為 arguments

注意:文件名或者是其他意義的名詞內含有空格符的情況 v有些命令不能接受過多參數,命令執行可能會失敗,xargs可以解決。

示例:
ls f* |xargs rm
find /sbin -perm +7000 | xargs ls –l
? find和xargs格式:find | xargs COMMAND

xargs是將標準輸出作為管道后面命令的參數的,和標準輸入不同。

壓縮和解壓縮工具

1、cpio

功能:復制文件從或到歸檔

cpio命令是通過重定向的方式將文件進行打包備份,還原恢復 的工具,它可以解壓以“.cpio”或者“.tar”結尾的文件

cpio [選項] > 文件名或者設備名

cpio [選項] < 文件名或者設備名

選項 ?-o 將文件拷貝打包成文件或者將文件輸出到設備上

-i 解包,將打包文件解壓或將設備上的備份還原到系統

-t 預覽,查看文件內容或者輸出到設備上的文件內容

-v 顯示打包過程中的文件名稱

-d 解包生成目錄,在cpio還原時,自動的建立目錄

-c 一種較新的存儲方式

將etc目錄備份:?? find ./etc -print |cpio -ov >etc.cpio

內容預覽 cpio –tv < etc.cpio

解包文件?? cpio –idv < etc.cpio

2、tar?? 不會刪除原文件

打包工具,可以是多個文件或者目錄,結合選項可以壓縮和解壓縮

-c 創建

-f 指定存儲文件 一般都有

-t 查看

-r 追加

-x 展開?? -C 展開后的文件存放到指定的目錄(必須先存在)

壓縮工具 -j:bzip2 ;-z:gzip;-J:xz;

-T:指定輸入文件的表格(批量設置)

-X:排除指定文件列表中的文件(批量設置)

split 分割大的tar文件?? -b 指定大小 -d數字結尾,不加是字母

split?? -b 1M -d?? 源文件?? 指定的小文件前綴

合并 cat 指定的小文件前綴* > 源文件名

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91068

(1)
hack王和juhack王和ju
上一篇 2018-01-12
下一篇 2018-01-13

相關推薦

  • 第五周 練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell; 1.  egrep "^(root|user1|fedora)" /etc/passwd|cut –d: –f7   2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:h…

    Linux干貨 2016-11-28
  • 文件的權限詳解(一)

    文件的權限 修改文件的屬主和屬組 chown 功能:更改屬主命令,同時也能更改屬組用法:   chown  選項  [屬主名][:屬組名]  文件名  (分隔符改成.也行) chown  選項   參考的文件=要更改的文件 chown [OPTION]… –reference=R…

    Linux干貨 2016-08-04
  • 初入馬哥教育的感受

    記錄來馬哥教育的點滴記錄及感受。。

    Linux干貨 2018-03-26
  • 馬哥教育網絡20期—nginx

    Nginx 一. Nginx 特性 二. Nginx 基本架構 三. Nginx 基本功能 四. Nginx 安裝 五. Nginx 配置文件 六. Nginx http服務功能測試 七. Nginx LNMP 一. Nginx 特性 模塊化,目前只能將模塊編譯進Nginx,暫時不支持動態裝卸載模塊.(httpd優勢) 可靠性,一個主進程(master)控制…

    Linux干貨 2016-06-26
  • 馬哥教育網絡班21期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@centos ~]# who | awk '{print $1 $NF}'| uniq -d root(192.168.40.1) derulo(19…

    Linux干貨 2016-07-22
  • Linux進程篇16.4top命令:進程管理工具

    top命令:進程管理工具

    2017-12-18
欧美性久久久久