文件查找find
文件查找: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 )
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目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;
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