直接在全文件系统上搜寻,功能强大,速度慢。
find [path] [-option] [ -print -exec -ok command ] {} \;
path: #要执行查找的目录。 -option: #查找的具体方法。 -print: #find命令将匹配的文件输出到标准输出。 -exec: #find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格。 -ok: #和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find / -name filename #在根目录里面搜索文件名为filename的文件 find /etc -name *s* #在目录里面搜索带有s的文件 find /etc -name *S #在目录里面搜索以s结尾的文件 find /etc -name s* #在目录里面搜索以s开头的文件 find / -amin -10 #在系统中搜索最后10分钟访问的文件 find / -atime -2 #查找在系统中最后48小时访问的文件 find / -mmin -5 #查找在系统中最后5分钟修改过的文件 find / -mtime -1 #查找在系统中最后24小时修改过的文件 find / -ctime -1 #查找在系统中最后24小时被改变状态的文件 find / -user username #查找在系统中属于用户username的文件 find / -group groupname #groupname 查找在系统中属于groupname的文件 find / -empty #查找在系统中为空的文件或者是文件夹 find / -inum 3 #查找inode号为3的文件 find / -type d #查找为文件类型为文件夹的文件d为文件夹 f #普通文件 d #目录文件 l #链接文件 b #块设备文件 c #字符设备文件 p #管道文件 s #socket文件
查找当前目录中所有c源文件的文件属性:
find ./ -name "*.c" -exec ls -l {} \;
全盘寻找文件,文件名部分匹配,只要有包含该字符串的都罗列出来,这个指令查找速度很快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来更新。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
where@ubuntu:~$ locate sources.list /etc/apt/sources.list /etc/apt/sources.list.d /etc/apt/sources.list~ /usr/share/doc/apt/examples/sources.list /usr/share/man/de/man5/sources.list.5.gz /usr/share/man/es/man5/sources.list.5.gz /usr/share/man/fr/man5/sources.list.5.gz /usr/share/man/it/man5/sources.list.5.gz /usr/share/man/ja/man5/sources.list.5.gz /usr/share/man/man5/sources.list.5.gz /usr/share/man/pl/man5/sources.list.5.gz /usr/share/man/pt/man5/sources.list.5.gz /var/lib/dpkg/info/python-pkg-resources.list /var/lib/dpkg/info/python3-pkg-resources.list
马上创建的文件没办法使用locate查找到:
where@ubuntu:~$ touch newfile where@ubuntu:~$ locate newfile where@ubuntu:~$
如果想马上更新可以使用一下指令:
updatedb