如何在Linux中使用Find命令

时间:2020-01-09 10:39:11  来源:igfitidea点击:

说明

在本教程中,我们将学习如何使用find命令在Linux文件系统上查找文件和目录。我们还将学习如何针对find命令返回的文件执行命令。

基本查找

find命令可用于查找文件,目录或者两者。默认情况下,它将匹配文件和目录的字符串。

find命令的基本语法如下所示

find  -name=

例如,要从主目录搜索名为" tutorials"的文件或者目录,可以执行以下命令。

find ~/ -name "tutorials"

查找文件

为了将搜索范围缩小到仅文件,可以在find命令中使用-type标志。使用上面的示例,为了仅查找名称为" tutorials"的文件,我们将执行以下命令。

find ~/my/files -name "tutorials" -type f

-type f指示find命令仅将-name字符串与文件匹配。

查找特定大小的文件

为了缩小结果范围,find命令可以搜索与特定大小匹配的文件。大小可以千字节,兆字节,千兆字节,太字节甚至PB来表示。

下面的示例搜索大小为2 GB的文件,并以512字节的块四舍五入。

find /my/media -type f -size 2G

查找用户拥有的文件

也可以根据所有权来查找文件。我们可以选择按用户名或者uid(用户ID)进行搜索。

要查找名为jsmith的用户拥有的文件,请在comand中使用-flag以及用户名。

find /opt/service -user jsmith

或者,要通过用户ID搜索,我们可以使用-uid选项。

find /opt/service -uid 1024

根据年龄查找文件

我们是否曾经需要查找在最近几分钟或者一天内创建的文件?幸运的是,find命令还支持根据年龄查找文件和目录。

要查找最近10分钟内创建的文件,请使用-newerct命令。

find /var/log -newerct `10 minutes ago` -print

查找目录

另外,要将搜索范围缩小到仅目录,可以使用带有-d值的-type标志。文件将被忽略,并且不会包含在搜索结果中。

find ~/ -name "tutorials" -type d

对找到的文件执行命令

在许多情况下,我们发现需要针对返回的文件列表执行命令。这可能是为了仅对给定路径的目录设置权限,或者将匹配的文件复制到特定位置。

要对发现的文件和目录执行命令,请使用exec标志。

find  -name  -exec  {} \;

命令末尾的两个方括号"{}"是占位符。占位符将由find命令返回的文件和/或者目录替换。最后的"`;;"终止find命令。

要将文件名中包含单词" tutorial"的文件从主目录复制到" / temp",请执行以下find命令。

find ~/ -name="*tutorials*" -type f -exec cp {} /temp \;

只要" find"与主目录或者其任何子目录中找到的文件匹配,它将执行" cp"命令将其复制到" / temp"目录。