如何在Linux中使用Find命令
说明
在本教程中,我们将学习如何使用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"目录。