码迷,mamicode.com
首页 > 其他好文 > 详细

干货:find+exec的风骚用法

时间:2019-05-15 22:52:59      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:mtime   etc   man   项目   img   linux内核   结束   不可   操作   

find 是我们很常用的一个Linux命令,但是我们一般查找出来的额并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。

  exec解释:

  -exec  参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。  

  {} 花括号代表前面find查找出来的文件名。

  使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find 查找,很方便的

 

我们直接通过以下几个实例来讲解find与exec联合用法。

 

实例1:使用find命令查找相关文件后,再使用ls命令将它们的详细信息列出来

我们现在想把当前目录下所有的.o文件全部找出来,并用 ls -l 命令将它们列出来。实现这个需求的命令如下:

find . -type f -exec ls -l {};

结果如下:

技术图片

 

实例2:在目录中查找更改时间为n天以前的文件,使用rm命令将它们删除

我们现在想把当前目录下所有的文件全部找出来,并用rm命令将它们删除。实现这个需求的命令如下:

find . -type f -mtime +14  -exec rm {} \;

执行完这个命令后,该目录下所有的14天以前的文件都被删除。

输出:

技术图片

实例3:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示

在实例2中,我们匹配到文件后就立刻执行rm命令,这样操作有些危险,因为如果一旦误操作,有可能会引起灾难性的后果。

exec的安全模式就是为了避免这个问题而产生。它会在匹配到某个文件后,在进行操作之前会先问一下你,经过你的确认它才会进行相应操作。

同样的实例2的需求,如果采用安全模式的话,命令是这样的:

find . -name "*.log" -mtime +14 -ok rm {} \;

执行结果如下:

技术图片

实例4:-exec中使用grep命令

假如我现在有个很大型的项目(如Linux内核),我想在里面搜索一个含有某关键字的文件。我们可以使用grep命令检索所有的文件。这样做肯定是可以的,但如果项目很大的话,这样太耗时了,效率太低。

我们可以先用find命令找到所以相关文件,然后再用grep命令检索那些文件即可。因为已经使用find过滤一遍了,所以这样操作会节约很多时间,提高效率。

命令如下:

find /etc -name "passwd*" -exec grep  "root" {} \;

结果如下:

技术图片

实例5:查找文件移动到指定目录

这个需求就比较简单了。比如我现在想把所有的.o文件找出来,然后新他们mv到buil目录。命令如下:

find . -name "*.log" -exec mv {} .. \;

结果:

技术图片

 

干货:find+exec的风骚用法

标签:mtime   etc   man   项目   img   linux内核   结束   不可   操作   

原文地址:https://www.cnblogs.com/zatko/p/10872694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!