find命令【1】 本文将帮助您了解Linux中最常用的find命令的基础知识。Linux中的find命令是什么? find命令用于搜索计算机上的文件和目录。它可以使你灵活的在特定目录中搜索文件或递归搜索所有子目录。 让我们探索find命令的强大功能如何按名称搜索文件 假设您在某处保存了一个名为helloworld。html的文件,但您不记得目录名称了。但是您的老板要求您立即将文件发送给他。 通常,如果您忘记了文件的存储位置,您首先会逐个浏览文件夹并检查文件是否存在。 这时就是find命令发挥作用的时候。您可以使用find命令自动执行该过程,而不是在您的计算机上手动搜索文件。 通过使用name标志传递文件名,find命令搜索并返回文件的位置。findnamefilename find命令语法以按名称搜索文件 按名称搜索文件的终端命令 但请记住name标志执行区分大小写的搜索。如果您希望不区分大小写,则可以改用iname标志。findinamefilename 不区分大小写搜索的命令 在某些地方,您还可以使用find命令替代ls命令。假设您需要查找所有以。txt扩展名结尾的文件。您可以通过使用正则表达式模式(。txt)的find命令来执行此操作。findpathtosearchname。txt 命令搜索模式匹配的文件 此命令将列出当前目录及其子目录中的所有。txt后缀的文件。 要在特定目录和子目录中查找。txt文件,您可以将pathtosearch替换为您的目录路径。如何在Linux中查找目录 通过将d传递给find命令中的type参数,可以搜索目录。findpathtosearchtyped 查找目录的命令 在上面的屏幕截图中,我们从当前目录中找到一个名为zip的目录。 同样,type选项接受其他参数选项以简化我们的查找过程。b块设备文件。d目录。c字符设备文件。p管道文件。l符号链接文件。f普通文件。ssocket文件如何在Linux中按大小搜索文件 将size选项与find命令一起添加可帮助您根据大小查找文件。在大小前加上或分别表示大于和小于。findpathtosearchsizesizeofthefile 按大小搜索文件 在上面的屏幕截图中,我们找到了所有大小大于1GB的文件。 您还可以搜索特定大小范围内的所有文件。 例如,如果要查找所有大于50MB且小于100MB的文件,可以运行以下命令:findpathtosearchsize50Msize100M 搜索一定范围内的文件 您可以用您喜欢的符号指定大小。一些可用的符号是:b:代表512位元组的区块(如果用户没有指定后缀,则默认为b)c:表示字节数k:表示kilobytes(1024字节)w:字(2字节)M:兆字节(1048576字节)G:千兆字节(1073741824字节)如何根据修改时间搜索文件 每个文件都有与之关联的创建时间和上次更新时间。假设您的目录中有数千个文件。您在过去几天编辑了一个文件,但忘记了它的名字。您确定在那之后您只编辑了很少的个文件。 在这种情况下,您可以找到过去7天内修改过的所有文件。这会将您的搜索从1000多个文件限制到更易于管理的数量。运行该命令后,您将能够在几秒钟内找到您编辑的文件。 这可以通过使用find命令传递mtime参数来实现。findpathtosearchmtimenumberofdaysago 搜索在特定日期内修改的文件 假设另外一个场景,今天是2023年2月10日,你在2023年2月3日之前修改了一个文件,2023年2月3日之后修改了很多文件。您必须找到您在2023年2月3日之前修改的文件。 您也可以使用find命令运行此查询。您可以通过将负号()与正号()交换来实现此目的。 这是为您修改的命令:搜索在特定日期之前修改的文件findpathtosearchmtime7如何对从find命令过滤的文件执行命令 这个问题可能会让你感到困惑。在揭晓答案之前,我们先用一个真实的场景来理解这个问题。 假设您在一个目录中有1000个文件,运行find命令会返回20个匹配的文件。您想要将这20个文件移动到不同的目录中。你怎么能做到这一点? 简而言之,我们必须对每个过滤后的文件运行一个命令。 您可以通过将exec选项与find命令一起传递来执行此操作。 exec选项对在搜索中找到的每个文件执行命令。exec选项后跟命令及其参数,{}符号表示被处理的文件的路径。 为了表示exec命令的结束,我们必须添加;(一个反斜杠和一个分号)。 语法如下:findpathtosearchnameexec{}; 让我们尝试将过滤后的文件从5minslearn目录移动到zip目录。 这是命令:find。5minslearnname。zipexecmv{}。5minslearnzip; 此命令在。5minslearn目录中搜索所有以。zip结尾的文件,然后将每个文件移动到。5minslearnzip目录。 exec选项允许您对找到的文件执行范围广泛的操作。您可以通过复制、删除甚至更改文件权限命令来替换上述示例中的移动命令。对过滤的文件执行命令之前进行确认 如果不确定是否对每个文件应用该操作,大多数人会更愿意使用ok。 ok选项类似于exec选项,只是它会在对每个文件执行操作之前要求确认。此命令对于在执行特定操作之前查看将受影响的文件非常有帮助。如果您不确定或不想应用该命令,您也可以选择拒绝。 例如,这次让我们尝试将。txt文件移动到其他目录。findpathtosearchname。txtokmv{}pathtodestination; 对筛选的文件运行操作之前要确认 上述命令在。5minslearn目录中搜索所有扩展名为。txt的文件,然后在将每个文件移动到。5minslearntextfiles目录之前提示用户确认。 要批准操作,输入yes,no则拒绝操作并跳到下一个文件。 当您想对正在修改的文件保持谨慎时,ok选项很有用,因为它允许您在执行指定命令之前检查每个文件及其位置。显示查找文件的详细信息 find命令中的ls选项用于以ls命令的格式显示有关搜索到的文件的信息。此选项提供有关文件的详细信息,例如它们的权限、所有者、大小和上次修改时间。findpathtosearchname。fileextensionls 以ls命令格式列出文件查找并删除文件 您是否曾经需要查找文件并将其从计算机中删除?find命令中的delete选项会为您执行此操作。它允许您删除符合指定条件的文件。find。name。extensiondelete 在上面的示例中,您可以看到find命令删除了扩展名为。html的文件 注意:此操作不可逆。运行删除操作时要100确定。 我建议首先运行不带delete标志的find命令,并确保只显示需要删除的文件。确定后,您可以执行附加delete标志的相同命令。总结 在本文中,您学习了如何使用Linux终端有效地搜索文件。 这些是find命令中非常基本的选项,我认为每个开发人员都应该知道。我相信掌握基础知识是使用Linux变得更高级的第一步。我一直在我所有的博客中介绍基础知识,以帮助您打下坚实的基础。