在需要查找文件或者文件夹时,find命令总能派上用场。Linux find命令用于在指定的目录下查找文件,不仅可以按照文件名进行文件搜索,还可以根据设置的参数按照文件大小,时间等来搜索文件,并将查找的结果在终端进行显示。其基本语法如下:
find [path] [-option] [-exec -ok command]
find的参数很多,常用参数如下:
参数 | 描述 |
-name | 按文件名查找 |
-size | 按文件大小查找 |
-user | 按文件属主查找 |
-type | 按文件类型查找 |
同时find命令还可以逻辑运算符not、and、or 一起使用以组成的复合条件进行文件查找。逻辑运算符and、or、not的含义为:
逻辑运算符 | 描述 |
and | 逻辑与,在命令中用 -a 表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足; |
or | 逻辑或,在命令中用 -o 表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足; |
not | 逻辑非,在命令中用 ! 表示。该运算符表示查找不满足所给条件的文件 ; |
这里我们只介绍一下基本语法和常用参数,主要来讲讲如何过滤使用find命令时大量的错误信息输出。有时候我们在使用find命令查找文件时可能会因为权限等问题导致出错,如此在终端就会打印出相关错误信息,如下:
有办法只显示找到的内容吗?试试下面的命令吧
find / -name hello_world* 2>/dev/null
使用 使用find命令的时在命令后加 2>/dev/null 将错误结果输出重定向/dev/null中,/dev/null 是一个特殊的设备文件,其实质为空设备文件,查看该文件的详情可知其还是个character special file,其大小是0字节,所有人都有读写权限,而他的主要作用的话就是接收一切输入给它的数据并丢弃,就像垃圾桶,的确它也通常被当作垃圾桶来使用,也被称为位桶(bit bucket)。
了解了/dev/null文件之后,我们来看看上述的“2”代表什么?Linux中有三个特殊的文件描述符,它们就是0,1,2。
描述符 | info |
0 | 标准输入(stdin) |
1 | 标准输出(stdout) |
2 | 标准错误(stderr) |
综上,如此一来,所有的错误信息就会被丢弃到位桶中,过滤掉错误的输出内容。