Linux下find与exec的联手干大事

简介: Linux下find与exec的联手干大事

在Linux下工作,find命令绝对是一个非常高频的命令。我们可以用find命令来找到符合某些关键词的文件,找到某些日期的文件,也可以设定一些正则表达式,找到一系列满足该条件的文件。


但是,如果只有一个find命令的话,我们仅能将文件找出来,列在终端里。仅一个find命令还不足以再做进一步的操作。


比如说,我们想把项目文件夹里的中间文件(*.o文件)找出来,再把它们全部删除;再如,我们想把日志文件夹下3天以上的日志全部转移到指定文件夹下;等等诸如此类的需求,还有非常多。


像这样的,我们想用find命令找到相关文件,再作进一步操作,该如何进行呢?这时候exec命令就派上用场。


我们先来看看exec的基本用法。


-exec参数后面跟的就是我们想进一步操作的命令,比如rm,mv等等。exec是以分号";"作为结束标识符的,考虑到各个系统平台对分号的不同解释,我们在分号前再加个反斜杠,便于移植。而在分号前,通常也会有一对花括号{},代表前面find命令查找出来的文件各。


我们直接通过几个实例来讲解find与exec联合用法。为了演示的方便,我们假定有如下的一个项目文件夹:


image.png


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


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


find . -name "*.o" -type f -exec ls -l {} \;


结果如下:


image.png


在这里,我们用find 命令匹配到了当前目录下的所有.o文件,并在 -exec 选项中使用 ls -l 命令将它们的详细信息列出来。


实例2:使用find命令查找相关文件后,再使用rm命令将它们删除


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


find . -name "*.o" -exec rm {} \;


执行完这个命令后,该目录下所有的.o文件都被删除。由于这个动作完成后也不会有任何提示,所以就没有截图的必要了。


实例3:使用-exec选项的安全模式,将对每个匹配到的文件进行操作之前提示用户


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


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


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


find . -name "*.o" -ok rm {} \;


执行结果如下:



image.png


实例4:搜索匹配到的文件中的关键内容


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


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


命令如下:


find . -name "*.h" -exec grep -rns "hello" {} \;


结果如下:


image.png



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


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

下:


find . -name "*.o" -exec cp {} build \;


结果如下:


image.png

目录
相关文章
|
1月前
|
Linux
认识Linux指令之 “find grep” 命令
认识Linux指令之 “find grep” 命令
认识Linux指令之 “find grep” 命令
|
1月前
|
Shell Linux
【Shell 命令集合 文件管理】Linux find命令使用教程
【Shell 命令集合 文件管理】Linux find命令使用教程
50 0
|
1月前
|
Linux
【linux】find、xargs、grep 联合查找文件内容
【linux】find、xargs、grep 联合查找文件内容
119 1
|
1月前
|
机器学习/深度学习 Linux
百度搜索:蓝易云【Linux下的find的使用方法】
上述是 `find`命令的一些常用用法和选项,通过灵活组合这些选项,可以实现更复杂的文件查找需求。在实际使用中,可以通过查阅 `find`命令的帮助文档或参考资料,了解更多选项和示例。
35 0
百度搜索:蓝易云【Linux下的find的使用方法】
|
6月前
|
Linux Go 数据安全/隐私保护
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
71 2
|
20天前
|
Linux
16. 【Linux教程】find 查找文件和目录
16. 【Linux教程】find 查找文件和目录
25 3
|
1月前
|
算法 Ubuntu Linux
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
Linux Qt cannot find -lGL错误完美解决方案(亲测有效)
61 0
|
1月前
|
Linux
Linux的find命令使用
【5月更文挑战第11天】Linux的find命令使用
25 3
|
1月前
|
Linux
Linux 指令|date|cal|find|grep|热键
Linux 指令|date|cal|find|grep|热键
|
1月前
|
Linux
【专栏】在 Linux 系统中,find命令是一个非常强大和实用的工具
【4月更文挑战第28天】`find`命令在Linux中用于高效查找文件。基本语法是`find [路径] [选项] [表达式]`。常用选项包括`-name`(按文件名查找)、`-type`(按类型如`f`(文件)、`d`(目录)查找)、`-size`(按大小查找)、`-mtime`(按修改时间查找)和`-exec`(执行命令)。通过逻辑运算符和正则表达式可组合复杂查询。示例:查找当前目录下名为`test.txt`的文件、查找所有目录、大于100KB的文件、一天内修改过的文件。结合`-exec`可对查找到的文件执行操作