在需要查找文件或者文件夹时,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命令查找文件时可能会因为权限等问题导致出错,如此在终端就会打印出相关错误信息,如下:

forfiles 忽略没找到 find 忽略错误_find命令


  有办法只显示找到的内容吗?试试下面的命令吧

find / -name hello_world* 2>/dev/null

forfiles 忽略没找到 find 忽略错误_逻辑运算符_02

使用  使用find命令的时在命令后加 2>/dev/null 将错误结果输出重定向/dev/null中,/dev/null 是一个特殊的设备文件,其实质为空设备文件,查看该文件的详情可知其还是个character special file,其大小是0字节,所有人都有读写权限,而他的主要作用的话就是接收一切输入给它的数据并丢弃,就像垃圾桶,的确它也通常被当作垃圾桶来使用,也被称为位桶(bit bucket)。

forfiles 忽略没找到 find 忽略错误_逻辑运算符_03


  了解了/dev/null文件之后,我们来看看上述的“2”代表什么?Linux中有三个特殊的文件描述符,它们就是0,1,2。

描述符

info

0

标准输入(stdin)

1

标准输出(stdout)

2

标准错误(stderr)

  综上,如此一来,所有的错误信息就会被丢弃到位桶中,过滤掉错误的输出内容。