一、参考资料
在ubuntu中搜索文件或文件夹的方法
Ubuntu 常用查找文件与文件内容指令
二、具体方法
1. whereis+文件名
用于程序名的搜索,搜索结果只限于二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
2. find / -name +文件名
find是在指定的目录下遍历查找,如果目录使用 / 则表示在所有目录下查找,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小时修改过的文件 |
# 模糊查询
sudo find / -iname "*opencv*"
# 全局搜索关键字
find / -name "*.*" | xargs grep -l instances
3. locate+文件名
sudo updatedb
locate eigen3
linux会把系统内所有的文件都记录在一个数据库文件中,使用locate+文件名的方法会在linux系统维护的这个数据库中去查找目标,相比find命令去遍历磁盘查找的方式,效率会高很多,比较推荐使用这种方法。
因为该数据库默认是一天更新一次的,所有使用locate命令有可能找不到最近新建的文件。这时就需要手动更新数据库,命令很简单,直接在终端中输入sudo updatedb就可以进行更新,更新速度还是比较快的,所以在搜索文件的时候建议使用locate命令。
4. which+可执行文件名
which的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件,所以基本的功能是寻找可执行文件
5. grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通过使用find与grep使我们能够更好地找到文件中的关键字。
# 查找所有包含 timersub关键字的文件
find / -name '*' | xargs grep 'timersub'
# 借助 grep -r 只搜索子目录的内容就能够避免提示
find / -name '*' | xargs grep -r 'timersub' -v "权限不够"
find / -name '*' | xargs grep -r 'timersub' -v "Permission denied"
# 在根目录 / 下查找cpuinfo文件
find / -name cpuinfo | xargs grep -r -v "Permission denied"
find / -name cudnn_version.h 2>&1 | grep -v "权限不够"
2>&1:将结果重定向到标准输出中
# 删除文件名含有 “-unaligned.apk” 的文件
find / -name "*-unaligned.apk" | xargs rm -rf