在Linux/UNIX中find命令
直接从命令行查找文件时,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