在Linux/UNIX中find命令

时间:2020-02-23 14:38:10  来源:igfitidea点击:

直接从命令行查找文件时,Linux find命令会派上用场。
为find命令提供搜索条件,例如权限,所有权,修改,大小,时间和日期等,以查找有问题的文件或者目录。

默认情况下,find命令在所有Linux发行版中都可用,因此,无需安装特殊软件包即可使用它。
由于其重要性,find命令是学习如果您想进一步了解任何Linux发行版上的命令行导航的基本命令。

我们将重点介绍一些find命令示例,并说明您可以使用的各种选项。

语法

$find <font color="red">location</font>  <font color="green">comparison-criteria</font>  <font color="blue">search term</font>

列出当前目录中的文件

要列出目录中的所有文件(包括文件夹内的文件),请运行以下命令。

$find .

在指定目录中搜索文件

如果要搜索给定目录中的所有文件,请使用以下find命令

$find directory_name

例如,要搜索/boot中的所有文件,请执行以下命令

$find /boot

使用指定目录中的文件名搜索文件

如果要使用目录中文件的名称指定搜索条件,则语法如下

$find directory_name -name "file_name"

例如,要在/etc目录中搜索Apache2文件,请运行

$find /etc -name "apache2"

输出

递归查找具有指定文件扩展名的所有文件

如果要在给定目录中搜索带有特定扩展名的特定文件,语法将如下所示

$find directory_name  -name "*.extension"

例如,要搜索/etc目录中的所有配置文件(.conf),请执行

$find /etc -name "*.conf"

限制搜索深度

您可以决定限制目录中文件搜索的深度。
例如,如果您想将文件搜索限制为目录的第一级,则语法为

$find directory_name -maxdepth 1 -name "*.conf"

因此,如果您想将文件搜索限制为/etc中扩展名为.conf的文件的第一级目录,请执行:

$find /etc -maxdepth 1 -name "*.conf"

如以上输出所示,文件搜索仅限于/etc目录级别。
如果要执行更深入的搜索并在/etc目录中的其他目录中更深入地查找,请增加maxdepth值。

例如,要搜索扩展名为.conf的文件直到第3个目录,请运行

$find /etc -maxdepth 3 -name "*.conf"

从上面的输出中可以看到,搜索将转到第二和第三目录。

反转搜索结果

您也可以使用find命令搜索不符合给定条件的文件。
当您要从搜索模式中删除已知文件时,此模式很有用。

为此,请使用-not -name属性,如图所示

$find /etc -maxdepth 1 -not -name "*.conf"

上面的输出显示所有不具有.conf fie扩展名的文件。

在OR运算符中使用find

您可以选择使用OR运算符将搜索结果与find结合使用,该运算符由以下示例中的-o标志表示

$find /etc -maxdepth 3 -name "cron" -o -name "ssh"

上面的命令在</etc目录中搜索名称为ssh或者cron的文件

仅搜索文件或者目录

如果只想搜索文件,请使用-type f属性,如下例所示

$find /etc -type f -name "ssh"

如果只想搜索目录,请使用"-type d"属性,如下面的示例所示。

$find /etc -type d -name "ssh"

搜索特定用户拥有的文件

要在特定目录中搜索特定用户拥有的文件,请使用以下语法:

$find /path -user username

例如,要在/home目录中查找用户james拥有的文件,请运行以下命令

$find /home -user james

搜索具有特定文件权限的文件

要搜索具有特定文件权限的文件,请使用以下语法

$find /directory_name  -type f -perm value

例如,要在/etc目录中搜索权限为755的文件,请运行:

$find /etc -type f -perm 755

搜索具有特定文件大小或者文件范围的文件

Linux find命令还为用户提供了根据文件大小搜索文件的机会。

搜索N尺寸的文件

例如,要搜索10kb的文件,请运行:

$find /etc -type f -size 10k

要搜索大于10kb的文件,请运行

find /etc -type f -size +10k

要搜索小于10kb的文件,请运行

find /etc -type f -size -10k