查找文件
locate
作用相当于find -name,但是locate速度会比find快很多,因为locate命令也是用数据库查找的。
因为该数据库默认是一天更新一次的,所有使用locate命令有可能找不到最近新建的文件。这时就需要手动更新数据库,命令很简单,直接在终端中输入sudo updatedb就可以进行更新,更新速度还是比较快的,所以在搜索文件的时候建议使用locate命令。
示例:
locate main.c
find
该命令直接查找硬盘,所以花费时间比较长。该命令可以找到你想要的任何文件,下边是一些比较好用的命令。
格式 | 含义 |
---|---|
find -name filename | 在根目录中寻找名字为filename的文件 |
find -name s | 在目录里面搜索带有s的文件 |
find -name *s | 在目录里面搜索以s结尾的文件 |
find -name s* | 在目录里面搜索以s开头的文件 |
find -amin -10 | 在系统中搜索最后10分钟访问的文件 |
find -atime -2 | 查找在系统中最后48小时访问的文件 |
find -mmin -5 | 查找在系统中最后5分钟修改过的文件 |
find -mtime -1 | 查找在系统中最后24小时修改过的文件 |
查找文件中的关键字
grep
有些时候我们不仅仅是想找我们需要的文件,还想找到文件中的某些关键字,这个时候我们就需要借助Ubuntu自带的强大的搜索工具——grep grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
find / -name '*' | xargs grep 'timersub'
通过使用find与grep使我们能够更好地找到文件中的关键字。 上边的指令就是通过find与grep相结合查找所有子文件中包含timersub关键字的文件,如果文件中包含该关键字,在终端中就会打印出来。
直接使用上边的指令进行搜索的时候,会出现很多的Is a directory无关紧要的提示信息,我们可以借助grep -r只搜索子目录的内容就能够避免提示。将上边的命令改为:
find / -name '*' | xargs grep -r 'timersub'