Linux 下搜文件, 通常先用 whereis 或 locate ,如果找不到,才以 find 搜寻!因为 whereis 与 locate 是利用数据库来搜寻数据,省时间!
<<鸟哥的Linux私房菜>>
1 whereis (寻找特定文件)
whereis [-bmsu] 文件或目录名
-b : 只找 binary 格式的文件 -m : 只找在说明档 manual 路径下的文件 -s : 只找 source 来源文件 -u : 搜寻不在上述三个项目当中的其他特殊文件
例一:找出 ifconfig 文档
whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
例二:找出跟 passwd 有关的『说明文件』档名(man page)
whereis -m passwd
passwd: /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz
2 locate
locate 的使用更简单,直接在后面输入『文件的部分名称』后,就能够得到结果。
locate [-ir] keyword -i :忽略大小写的差异; -r :后面可接正规表示法的显示方式
例一:找出系统中所有与 passwd 相关的档名 locate passwd
/etc/passwd
/etc/passwd-
/etc/alternatives/kpasswd
...省略....
3 find
find [PATH] [option] [action]
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。 -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
例一:将过去系统24小时内有更动过内容(mtime)的文件列出
find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!
例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!