当前位置: 首页 > Linux

Linux下find和exec的结合,大有作为

时间:2023-04-06 02:06:20 Linux

在Linux下工作,find命令绝对是一个使用频率非常高的命令。我们可以使用find命令来查找匹配某些关键字的文件,查找具有特定日期的文件,或者设置一些正则表达式来查找一系列满足条件的文件。但是,如果只有一个find命令,我们只能找到文件并在终端列出。只有一个查找命令不足以进行进一步的操作。比如我们要找出工程文件夹中的中间文件(*.o文件),然后全部删除;再比如,我们要将日志文件夹中超过3天的所有日志都转移到指定的文件夹中;等等,有这么多的需求。像这样,我们想用find命令找到相关的文件,然后做进一步的操作,如何进行呢?这是exec命令派上用场的地方。我们先来看看exec的基本用法。-exec参数后面是我们要进一步操作的命令,比如rm、mv等。exec使用分号“;”作为结束标识符。考虑到各个系统平台对分号的解释不同,我们在分号前加一个反斜杠,方便移植。分号前通常有一对花括号{},代表前面find命令找到的文件。我们直接通过几个例子来说明find和exec的结合使用。为了演示方便,我们假设有一个工程文件夹如下:例1:使用find命令查找相关文件,然后使用ls命令列出其详细信息现在我们要列出所有.o文件在当前目录中找到它们,并用ls-l命令列出它们。实现这个需求的命令如下:find。-name"*.o"-typef-execls-l{}\;结果如下:这里,我们使用find命令匹配当前目录下的所有.o文件,并使用带-exec选项的ls-l命令列出它们的详细信息。例2:用find命令找到相关文件,然后用rm命令删除我们现在要找到当前目录下的所有.o文件,用rm命令删除。实现这个需求的命令如下:find。-name"*.o"-execrm{}\;执行该命令后,该目录下的所有.o文件将被删除。由于这个动作完成后不会有提示,所以就不用截图了。示例3:使用-exec选项的安全模式将在操作每个匹配的文件之前提示用户。在示例2中,我们将匹配文件后立即执行rm命令。这个操作有点危险,因为如果你误用它,可能会产生灾难性的后果。exec的安全模式就是为了避免这个问题而产生的。它匹配到某个文件后,在执行操作前会询问你,你确认后才执行相应的操作。同例2的需求,如果使用安全模式,命令如下:find。-name"*.o"-okrm{}\;执行结果如下:例4:在匹配文件中查找关键内容如果我有一个很大的项目(比如Linux内核),我想查找包含某个关键字的文件。我们可以使用grep命令检索所有文件。这样做是肯定可以的,但是如果工程量大的话,太费时,效率低。我们可以先使用find命令查找所有相关文件,然后使用grep命令检索这些文件。因为find已经用过一次过滤,这个操作会节省很多时间,提高效率。命令如下:查找。-name"*.h"-execgrep-rns"hello"{}\;结果如下:例5:找到文件并移动到指定目录。这个要求比较简单。例如,我现在想找出所有.o文件,然后将它们新建mv到buil目录。命令如下:查找。-name"*.o"-execcp{}build\;结果如下:更多精彩内容请关注公众号良旭Linux,在公众号回复1024免费获取5T技术资料,包括:Linux,C/C++,Python,RaspberryPi,Embedded,Java,人工智能等公众号回复加群,邀您加入达人如云技术交流群。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以和我一起把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站