Linux系統的核心思想之一就是一切皆文件,可想而知你要靠記憶去查找一個文件該是多么費勁;今天我們介紹幾個文件查找命令:whereis,locate,find
whereis
locate the binary, source, and manual page files for a command 【SYNOPSIS】 whereis [-bmsu] [-BMS directory... -f] filename... 【OPTIONS】 -b 僅查找二進制文件 -m 僅查找man章節 -s 僅查找源文件
locate
find file by name locate命令與其他查找命令不同在于,它是靠查詢一張數據表的內容來查找文件位置:/var/lib/mlocate/mlocate.db而這張表是定時自動更新其內容的,新加的文件或者目錄是無法立即查詢得到的,通過命令【updatedb】命令來即時更新其數據表來獲取最新的文件保存信息 【SYNOPSIS】 locate [OPTION]... PATTERN... 【OPTION】 -b, --basename 僅查找基名的路徑 -c,--count 僅顯示查找到的數量 -d,--database DBPATH 更改mlocate.db保存路徑 -i,--ignore 忽略大小寫 -r,--regexp 支持基本正則表達式 --regex 支持擴展正則表達式 -l,--limit -n LIMIT 指定顯示數量 -P,--nofollow 不顯示鏈接指向符號檢測文件是否存在 -L,--follow 與-P相反
find
search for files in a directory hierarchy 【SYNOPSIS】 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] 【OPTIONS】 -P Never follow symbolic links(defualt) -L Follow symbolic links -H Do not follow symbolic links, except while processing the command line arguments. -nouser 無屬主 -nogroup 無屬組 -atime 訪問時間查找(天數) +n n時間之前的文件 n n時間24小時之內訪問的時間(閉合區間) -n n時間到現在的時間 -mtime 修改時間查找(天數) -ctime 改變時間查找(天數) -amin (分鐘) -mmin (分鐘) -cmin (分鐘) -user 按屬主查找 -group 按屬主查找 -perm 按權限查找 mode 權限精確查找 -mode 每一類用戶權限中的每一位權限符合條件即可 /mode 任意一類用戶權限中的任意一位權限條件滿足即可 -size 按照文件大小查找 +n 大于n的 n 大于等于n,小于n+1 -n 小于n 【EXPRESSION】 -print 標準輸出,默認 -ls 將查找到的文件“ls -l”,不支持alias別名命令 -delete 將查找到的文件刪除 -fls /PATH/TO/SOMEFILE 將查找到的文件的長格式保存至路徑 -ok COMMAND {} \; 對查找到的內容執行COMMAND,并交互確認 -exec COMMAND {} \; 對查找到的內容進行COMMAND find | xargs find文件后執行COMMAND時,不支持長格式參數,如果參數過長會出錯,無法執行,則使用此管道命令執行
1、顯示當前系統上root、fedora、user1用戶的默認shell
grep -E "^(root|fedora|user1)" /etc/passwd |cut -d: -f1,7
2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一個小括號的行
grep "\<[[:alnum:]]*\>[(][)]" /etc/rc.d/init.d/functions
3、使用echo命令輸出一個絕對路徑,使用grep取出其基名/取出其路徑名 echo PATH |grep -o "[^/]+[[:alnum:]][[:punct:]]$" echo /var/spool/mail/root|grep -o "(/).*\1" 4、找出ifconfig命令結果中的1-255之間的數字
ifconfig |grep -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
5、寫一個模式,能匹配合理的IP地址
ifconfig |grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
6、寫一個模式,能匹配出所有的郵件地址
grep -o "[[:alnum:]]\+[[:punct:]]*[[:alnum:]]\+\>@[^[:space:]]\+[[:alnum:]]*\>" /var/spool/mail/root
7、查找/var目錄下屬主為root,且屬組為mail的所有文件或者目錄
find /var/ -user root -a -group mail -ls
8、查找當前系統上沒有屬主或者屬組的文件/查找當前系統上沒有屬主或者屬組,且最近三天內曾被訪問過的文件或者目錄
find / -nouser -o -nogroup -a -atime -3
9、查找/etc/目錄下所有用戶都有寫權限的文件
find /etc/ -perm -222 -exec ls -dl {} \;
10、查找/etc目錄下大于1M,且類型為普通文件的所有文件
find /etc -type f -a -size +1M -exec ls -dl {} \;
11、查找/etc/init.d/目錄下,所有用戶都有執行權限,且其他用戶有寫權限的文件
find /etc/init.d/ -perm -111 -a -perm -002 -exec ls -l {} \;
12、查找/usr目錄下不屬于root、bin或者hadoop的文件
find /tmp/ ! -user root -a ! -user bin -a ! -user hadoop -exec ls -l {} \;
13、查找/etc目錄下至少有一類用戶沒有寫權限的文件
find /etc/ ! -perm -222 -exec ls -l {} \;
14、查找/etc目錄下最近一周內其內容被修改過,且不屬于root或者hadoop的文件
find /etc/ -mtime -7 -a ! -user root -a ! -user hadoop -exec ls -l {} \;
原創文章,作者:396064847,如若轉載,請注明出處:http://www.www58058.com/50652
這幾個工具用好了,可以大幅提高文件查找效率,這篇文章整理的非常不錯。