Linux 常用文件搜索命令

 

2020-04-05

最近有点懒散,准备换个主题或深入一点,这周让我再偷一次懒吧。

find

find 可以根据条件在指定目录中进行查找。

路径

在 find 命令后面的第一个参数便是路径,如果不指定要搜索的类型便会列出当前目录和子目录的所有文件:

Terminal window
1
find .

文件名

-name 指定要查找的文件/目录名称。

Terminal window
1
# 在当前目录查找
2
find . -name test.md
3
# 搜索指定后缀
4
find . -name "*.md"
5
# 可以同时搜索多个文件
6
find . -name test.md hi.md

对象类型

-type 指定要搜索的对象类型。

Terminal window
1
# 搜索当前目录下所有 hi 的文件
2
find . -type f -name hi
  • d:文件夹
  • f:普通文件
  • l:符号链接
  • b:块设备

文件大小

-size 指定要搜索文件的大小。

Terminal window
1
# 查找当前目录下大于 100M 的文件
2
find . -size +100M
  • 大小
    • -size 100M:等于 100M
    • -size +100M:大于 100M
    • -size -100M:小于 100M
  • 单位
    • k:KB
    • M:MB
    • G:GB

递归搜索

-maxdepth 指定搜索层次。

Terminal window
1
# 指定搜索 3层
2
find . -maxdepth 3 +size 100M

locate

相较与 find,locate 是在系统创建的索引中查找文件,因此速度更快,但可能无法找道最新创建的文件。

Terminal window
1
locate hi
2
# 不区分大小写
3
locate -i hi
4
# 手动更新数据库
5
updatedb

which

which 可以查看指定命令路径,也可以用于判断系统中是否存在指定命令。

Terminal window
1
which vim

同样可以达到类似功能的命令还有:

  • whereis:查看命令的执行路径
  • type:显示命令类型