linux find命令是根据指定条件搜索文件和目录的绝佳工具。exec允许您对找到的文件执行指定操作。
例如你要使用find命令找到所有以.jpeg作为扩展名的文件,然后用.jpg扩展名重命名文件。
此时你两种方法可以对find命令的结果执行指定的操作。第一种是使用xargs命令,第二种是exec命令。
我们已经编写过有一篇xargs命令详解的文章。本教程将重点详解组合find exec命令的用法。
您不能只是通过管道将find命令输出重定向到另一个命令。它不会那么简单
在开始本教程之前,请运行touch命令touch file1.txt file2.txt file3.txt创建教程需要使用的文件。
touch file1.txt file2.txt file3.txtfind exec 命令实例教程find命令和exec命令组合使用的基本语法是find [path] [arguments] -exec [command] {} \\;。
[command]是您要对find命令的结果执行的操作。{}是一个占位符,用于保存find命令的搜索结果。
\\;表示[command]命令的结束。在这里你需要转义;避免shell的解释,因此会写成这样\\;。
还有另一种语法与上述略有不同,这是它的语法形式find [path] [arguments] -exec [command] {} +。
+表示对于find命令搜索结果,运行一次[command]。所有结果都作为参数一起传递给[command]。
你仍然对{} \\;和{} +的使用感到困惑,你可以尝试跟着我们的实例进行操作。
find . -type f -exec ls {} ;命令将会对搜索每一个搜索结果运行ls命令,类似于运行3次ls命令,但每次参数都是不同的文件。
find . -type f -exec ls {} \\;#eqls file1.txtls file2.txtls file3.txt如果你使用的是{} +。也就是将find命令的搜索结果一次传递给exec指定的命令[command]。例如命令find . -type f -exec ls {} ;。
与{} \\;运行多次同一个命令相比,使用{} +是更好的选择,因为性能更好。但在某些情况你不能这样做。
如果find命令搜索结果有50个,则不能将搜索结果作为参数一次传递给命令,因为linux对最大命令行长度有限制。
find . -type f -exec ls {} ;#eqls file1.txt file2.txt file3.txtfind exec 命令搜索重命名文件扩展使用find exec命令可让你以轻松重命名文件。在组合使用find exec命令还需要使用mv。mv 命令是用于移动文件或者重命名文件。
以下命令将会修改当前目录的所有*.txt文件扩展名为.js。-exec运行sh命令启动子shell进程。
sh -c 'mv $1 ${1%.txt}.edefg'子shell进程运行命令mv $1 ${1%.txt}.js。${1%.txt}.js参数将会匹配原始文件扩展名的txt并替换为js。
find . -type f -name '*.txt' -exec sh -c 'mv $1 ${1%.txt}.js' _ {} \\;find exec 命令删除文件自动删除文件时请格外小心。如果不注意,可能会是灾难性的。要么使用交互式删除命令rm -i,要么先打印查看find命令搜索的结果。
find exec命令组合的另一个常见示例是搜索大于指定大小的文件并将其删除。如果您正在清理日志,这很有效。
例如删除大于100 mb的文件,或者根据文件的修改时间删除文件。在这里,我们使用-mtime选项搜索过去10小时修改的文件并删除。
find ~/desktop -size +100m -exec rm {} \\;sudo find /tmp/ -type f -mtime +10 -exec rm {} \\;find exec grep 命令搜索文件内容find命令仅对文件属性进行搜索。而grep命令可用于文件的内容。将find exec和grep组合起来,您就得到一个强大的命令行搜索工具。
例如命令find . -type f -name *.js -exec grep -h keyword {} ;搜索当前目录的所有js文件,然后使用grep命令搜索关键词keyword。
这里之所以使用grep命令的-h选项,是因为grep默认不打印匹配搜索模式的文件名。-h选项将会打印匹配的文件名和匹配的内容并使用:分隔。
find . -type f -name *.js -exec grep -ih a {} \\;find 命令与多个exec是的,您可以将find命令的搜索结果链接多个exec命令。多个exec命令并不是共享find命令的搜索结果。
而是第一个exec命令的结果再传递下一个exec命令。例如以下命令它将首先搜索.hbs文件。然后第一个exec命令的标准输出传递到第二个exec命令。
find是很强大的命令,用于根据多个条件搜索文件。exec命令使您能够处理find命令的结果。
find . -type f -name *js -exec ls {} \\; -exec grep -h keyword {} \\;find exec 命令修改文件目录权限所有权修改文件和目录的所有权是组合find exec命令另一个例子。以下命令,搜索myfreax用户拥有的文件,然后将其所有权更改为myfreax.com。
如果你学会更改文件的所有权,自然你很容易就会使用find exec命令修改文件目录权限,-type f是文件,-type d是目录。
在这里分享的例子只是简单的示例。find exec命令组合一起为您提供了在linux命令行中执行操作的无限可能。
sudo find /home/myfreax/disk/downloads -user myfreax -type f -exec chown myfreax.com {} \\;sudo find /home/myfreax/disk/downloads -type f -exec chmod 644 {} \\;
Intel十代酷睿超频数据详解:i9系列芯片体质最佳
半入耳式蓝牙耳机什么牌子好?半入耳式真无线耳机推荐!
主题教育 | 联学共建促发展 凝心聚力谱新篇——易华录党委和太极股份党委开展主题教育联学共建活动
当前常用单片机开发模式有哪些
宁波大学成功制造出使用高分子材料电极的石英晶体谐振器
find exec命令实例教程
BAT转向“产业互联网”应用于诸多领域
中国高光谱成像在中药领域的应用前景-莱森光学
硬盘接口SATA2.0和SATA3.0的区别
新一代智能手机市场--防水手机将面临着怎样的设计挑战?
UVLED将成为未来工业中的重要角色
文件管理器与文件传输的操作方法
如何修复IPhone 5s的处理器A7
共射极、共基极、共集电极电路,到底怎么区分呢?
既要便捷、安全+智能,也要颜值,萤石发布北斗星人脸锁DL30F和极光人脸视频锁Y3000FV
电源的软件开机关机功能怎样实现的
物联网在农业实践中的七大实际应用和好处
西门子PLC基础指令知识详解!
禁售的挽救,苹果推出换购优惠
助力汽车自我思考