【Linux學習013】文件查找

一、文件查找命令分類

    1.locate命令

        該命令是非實時的,模糊匹配,查找是根據全系統文件數據庫進行的,速度比較快;可以自己定義更新數據庫的策略,也可以使用updatedb命令手動生成或者更新文件數據庫;該命令不經常使用。

    2.find命令

        該命令是實時的,精確查找,遍歷所有目錄中的所有文件完成查找,速度比較慢,但是支持衆多的查找標準,是最經常使用的文件查找命令。

    3.find命令的使用格式:

find 查找路徑 查找標準 查找到以後的處理動作

    查找路徑:默認爲當前目錄

    查找標準:默認爲指定路徑下的所有文件

    查找到以後的處理動作:默認爲打印到屏幕

二、查找標準

-name 'FILENAME'

該命令對文件名做精確匹配,可以使用文件名通配符

* : 任意長度的任意字符

? : 長度爲1的任意字符

[] : 指定範圍內的任意字符

-iname 'FILENAME' 文件名匹配時不區分大小寫
-regex PATTERN 基於正則表達式進行文件名匹配
-user USERNAME
根據屬主查找
-group GROUPNAME
根據數組查找
-uid UID
根據UID查找
-gid GID 根據GID查找
-nouser
查找沒有屬主的文件
-nogroup 查找沒有數組的文件
-type
f:普通文件
d:目錄
c:字符設備文件
b:塊設備文件
l:鏈接文件
p:管道設備文件
s:套接字文件
-size

[+|-]#k:按照k爲單位查找文件

[+|-]#M:按照M爲單位查找文件
[+|-]#G:按照G爲單位查找文件
-mtime [ + | - ]#
modify time,文件最後一次修改時間,單位是天
-ctime [ + | - ]# change time,文件最後一次改變時間,單位是天
-atime [ + | - ]# access time,文件最後一次訪問時間,單位是天
-mmin [ + | - ]#
同上,單位是分鐘
-cmin [ + | - ]# 同上,單位是分鐘
-amin [ + | - ]# 同上,單位是分鐘
-perm MODE
精確匹配
-perm -MODE 只有文件權限完全包含此MODE時才符合條件
-perm /MODE 任意一位匹配即滿足條件

三、組合條件

-a -and 與條件
-o -or 或條件
-not 非條件

四、處理動作

- print 顯示
-ls
詳細顯示每一個文檔的信息

-ok COMMAND {} \;

每一次操作都需要用戶確認
-exec COMMAND {} \; 不需要用戶確認

五、文件查找練習題

    1.查找/var目錄下屬主爲root並且屬組爲mail的所有文件

find /var -user root -a -group mail

    2.查找/usr目錄下不屬於root,bin,或student的文件

find /usr -not -user root -a -not -user bin -a -not -user student

        或者

find /usr -not \( -user root -o -user bin -o -user student\)

    3.查找/etc目錄下最近一週內內容修改過且不屬於root及kdyzm用戶的文件

find /etc -mtime -7 -a -not \( -user root -o -user kdyzm \)

        或者

find /etc -mtime -7 -a -not -user root -a -not -user kdyzm

    4.查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改爲root

find / -mtime -1 -a \( -nouser -o -nogroup \) -exec chown root.root {} \;

    5.查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc.largefiles文件中

find /etc -size +1M >> /tmp/etc.largefiles

    6.查找/etc目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息

find /etc -not -perm /222 -ls




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章