文件的查找

文件的查找

使用locate命令

默認從根開始搜索

非實時查找(數據庫查找)

locate 文件名

查詢系統上預建的的文件索引數據庫

   /var/lib/mlocate/mlocate.db
依賴于事先構建的索引
索引的構建是在系統較為空閑時自動進行(周期性任務),管理員手動更新數據庫(updatedb)。注意工作中不能輕易使用updatedb

locate 選項

-i 執行區分大小寫的搜索
-n N 只列舉前N個匹配的項目

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

locate -r ‘\.foo$‘:支持正則表達式
 使用Regex來搜索以“ .foo”結尾的文件

find

? 實時查找工具,通過遍歷指定路徑完成文件查找;
? 工作特點:
? 查找速度略慢
? 精確查找
? 實時查找
? 可能只搜索用戶具備讀取和執行權限的目錄

語法

? find [OPTION]... [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕

查找條件

根據文件名和inode查找:

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

根據屬主、屬組查找:

-user USERNAME:查找屬主為指定用戶(UID)的文件
-group GRPNAME: 查找屬組為指定組(GID)的文件
-uid UserID:查找屬主為指定的UID號的文件
-gid GroupID:查找屬組為指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件

根據文件類型查找:

-type TYPE:
? f: 普通文件
? d: 目錄文件
? l: 符號鏈接文件
? s:套接字文件
? b: 塊設備文件
? c: 字符設備文件
? 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示例

? find -name snow.png
? 搜索名為snow.png的文件
? find -iname snow.png
? 不分大小寫地搜索名為snow.png、 Snow.png、
SNOW.PNG等等的文件
? find / -name “*.txt”
? find /var –name “*log*”
? find -user joe -group joe
? 搜索被用戶joe 以及組群joe所擁有的文件

? find -user joe -not -group joe
? find -user joe -o -user jane
? find -not \( -user joe -o -user jane \)
? find / -user joe -o -uid 500

? 找出/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才會匹配
? 只有當其它人( other)有寫權限時, find -perm -002才
會匹配

處理動作:

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

find示例

? find -name “*.conf” -exec cp {} {}.org \;
? 備份配置文件,添加.org這個擴展名
? 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 /home –type d -ls

練習:

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

find /var -user root -group mail

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

find /var -not -user root -not -user lp -not -user gdm

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

? 4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪
問過的文件
? 5、查找/etc目錄下大于1M且類型為普通文件的所有文件
? 6、查找/etc目錄下所有用戶都沒有寫權限的文件
? 7、查找/etc目錄下至少有一類用戶沒有執行權限的文件
? 8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它
用戶有寫權限的文件

Gnome 搜索工具

? 位置->搜索文件……
? 圖形化搜索工具,可搜索
? 命令
? 內容
? 用戶/組群
? 大小
? 修改時間

壓縮、解壓縮及歸檔工具

? file-roller
? compress/uncompress: .Z
        ? compress [-dfvcVr] [-b maxbits] [file ...]
        -d: 解壓縮,相當于
        -c: 結果輸出至標準輸出,不刪除原文件
        -v: 顯示詳情
? uncompress 解壓縮
? zcat file.Z >file
? gzip/gunzip: .gz
        ? gzip [OPTION]... FILE ...
        -d: 解壓縮,相當于gunzip
        -c: 將壓縮或解壓縮的結果輸出至標準輸出
        -#: 1-9,指定壓縮比,值越大壓縮比越大
        ? zcat:不顯式解壓縮的前提下查看文本文件內容
        ? 實例:
        gzip -c messages >messages.gz
        gzip -c -d messages.gz > messages
        zcat messages.gz > messages
? bzip2/bunzip2: .bz2
        ? bzip2 [OPTION]... FILE ...
        -k: keep, 保留原文件
        -d:解壓縮
        -#: 1-9,壓縮比,默認為6
        ? bzcat:不顯式解壓縮的前提下查看文本文件內容
? xz/unxz: .xz
        ? xz [OPTION]... FILE ...
        -k: keep, 保留原文件
        -d:解壓縮
        -#: 1-9,壓縮比,默認為6
        ? xzcat: 不顯式解壓縮的前提下查看文本文件內容
? zip/unzip
        p/unzip
        ? 打包壓縮
        zip –r sysconfig sysconfig/
        ? 解包解壓縮
        unzip sysconfig.zip
        cat /var/log/messages | zip message -
        unzip -p message > message
? tar
        ? 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命令是通過重定向的方式將文件進行打包備份,還原恢復
        的工具,它可以解壓以“ .cpio”或者“ .tar”結尾的文件。
        ? cpio [選項] > 文件名或者設備名
        ? cpio [選項] < 文件名或者設備名
        ? 選項
        -o 將文件拷貝打包成文件或者將文件輸出到設備上
        -i 解包,將打包文件解壓或將設備上的備份還原到系統
        -t 預覽,查看文件內容或者輸出到設備上的文件內容
        -v 顯示打包過程中的文件名稱。
        -d 解包生成目錄,在cpio還原時,自動的建立目錄
        -c 一種較新的存儲方式

示例

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

作業:

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

[root@ Mr zhou  ~]# find /var -user root -a -group mail

文件的查找

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

[root@ Mr zhou  ~]# find /var -not \( -user root -o -user lp -o -user gdm \) -ls

文件的查找

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

[root@ Mr zhou  ~]# find /var -mtime -7 -not \( -user root -o  -name postfix \) -ls

文件的查找

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

[root@ Mr zhou  ~]# find -atime -7 -a \( - nouser -o - nogroup \)

文件的查找

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

[root@ Mr zhou  ~]# find /etc -size +1M -a -type f -l

文件的查找

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

[root@ Mr zhou  ~]# find /etc -not -perm -222

文件的查找

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

[root@ Mr zhou  ~]# find /etc/ -perm /111 -ls |head -4

文件的查找

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

[root@ Mr zhou  ~]# find /etc/init.d -perm -113 -ls

文件的查找

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

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

相關推薦

  • 0804正則表達式作業

    用正則表達式表示IP地址         首先來分析一下,制IP地址是一個32位的二進制數,通常被分割為4個“8位二進制數”(也就是4個字節)。IP地址通常用“點分十進制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進制整數。例:點分十進IP地址(1…

    Linux干貨 2016-08-10
  • Linux bash中命令執行狀態返回值

    Linux bash中命令執行狀態返回值 在操作系統中,命令的執行后輸出的內容為命令執行結果輸出,而這個命令本身是否執行成功,它是通過命令執行狀態返回值來標識的。 常用的值: 0 表示命令執行成功非0 表示命令執行失敗 bash中獲取命令執行狀態返回值的方法 在剛執行完一條指令后,使用echo $?取得上一條指令的命令執行狀態返回值,示例如下:  …

    Linux干貨 2016-11-06
  • 學習的第二周

    硬鏈接不能跨分區,硬鏈接不支持對目錄的創建, 硬鏈接的本質是一個文件N個節點  ls |xargs rm 解決參數太長 無法正常刪除的問題。   軟連接 依賴于原始文件 刪除就沒了軟連接可以跨分區,可以根據目錄創建軟連接,而且還可以針對文件夾 軟連接依賴于原始文件。原始文件刪了軟連接就打不開了  相對路徑一般相對當前工作目錄,但…

    Linux干貨 2017-05-30
  • class12 shell編程(四)軟件包管理(二)

    一、shell編程(四) 1、循環特殊用法 while 循環的特殊用法(遍歷文件的每一行): while read line; do       循環體   done < /PATH/FROM/SOMEFILE 依次讀取/P…

    Linux干貨 2016-08-24
  • 設計模式 ( 二十 ) 訪問者模式Visitor(對象行為型)

    特此說明:對訪問者模式理解不是特別透徹,若有誤,請指正,謝謝! 1.概述 在軟件開發過程中,對于系統中的某些對象,它們存儲在同一個集合collection中,且具有不同的類型,而且對于該集合中的對象,可以接受一類稱為訪問者的對象來訪問,而且不同的訪問者其訪問方式有所不同。 例子1:顧客在超市中將選擇的商品,如蘋果、圖書等放在購物車中,然后到收銀員處付款。在購…

    Linux干貨 2015-04-07
  • Linux系統基礎(二)

    一、Linux文件管理命令及其常用方法 1、cd(切換目錄)這個命令應該是Linux中用的最頻繁的一個命令之一了,因為我們經常需要進行目錄的切換。在詳解這個命令之前,首先得補充一個重要的知識,就是我們常用的一些比較特殊的目錄: .        代表當前目錄 .. &n…

    Linux干貨 2016-09-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 13:16

    文章整體層次分明,思路清晰,對命令的常見用法總結的和詳細,find命令在工作中是用的比較多的,也是以后筆試必考的知識點,所以下來后多加練習,達到熟練掌握。

欧美性久久久久