1. 程式人生 > >文件查找find

文件查找find

print 不能 權限 roo 每次 小寫 修改 區分 exec

文本查找的工具有:grep,egrep,fgrep
文件查找:locate,find;locate filename是非實時模糊查找filename,它是根據數據庫的內容查找,優點是速度快,缺點是不能找出最新的文件,需要手動使用updatedb命令更新數據庫文件。find是實時精準查找文件,他會遍歷指定目錄下的所有文件,缺點是速度慢。

1.find的用法

        find   查找路徑   匹配條件     找到後的處理動作
        查找路徑:默認是當前目錄
        匹配條件:默認是指定目錄下的所有文件
                        -name ‘filename’:查找目錄下文件名為filename的文件,-iname是不區分大小寫,可以使用通配符:
                                * :任意長度的任意字符
                                [ ] :中括號內的任意一個字符
                                ? :任意一個字符

                        -regex PATTERN :基於正則查找文件。
                        -user  username:查找屬主是username的文件。
                        -group groupname :查找屬組是groupname 的文件。
                        同理:
                        -nouser :查找沒有屬主的文件。
                        -nogroup:查找沒有屬組的文件。
                        -gid GID :查找為GID的文件。
                        -uid UID :查找為UID的文件。
                        -type :查找文件的屬性,如
                                        -f 普通文件
                                        -d 目錄
                                        -c 字符文件
                                        -b 塊文件
                                        -l 連接文件
                                        -p 管道文件
                                        -s socket文件
                        -size :按文件的大小查找,如 + 100M 查找100M以上的文。件,-100M查找100M以內的文件,需要主要的是 -size 10M 表示查找的的文件大小在9-10M之間,取等,單位有k M G等。
                        -mtime,-ctime,-atime 後面接 [+ | -]時間,表示查找多少天以前或以內的修改過的時間,改變過屬性的時間,訪問過的時間。
                        -perm MODE(或 -MODE)精確匹配到的,/MODE 只要匹配到任意一位權限位即可,如 -perm 755 要文件的權限與755一致才匹配到,-perm /755只要文件的任意一個權限與其中一個匹配即可。

                        可以組合條件, -a -o -not

        找到後的處理動作:默認是打印到屏幕
                        -print :顯示(默認)
                        -ls :雷同ls -l
                        -ok  COMMAND {}  \; :每次操作前詢問
                        -exec  COMMAND {}  \;同上,不詢問

練習:1、查找/var目錄下屬主為root並且屬組為mail的所有文件;
find /var -user root -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及student用戶的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student )

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

4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改為root;
find / ( -nouser -o -nogroup ) -a -atime -1 -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
1、查找/var目錄下屬主為root並且屬組為mail的所有文件;
find /var -user root -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及student用戶的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student )
find /etc -mtime -7 -not -user root -a -not -user student

4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改為root;
find / ( -nouser -o -nogroup ) -a -atime -1 -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

文件查找find