当前位置: 首页 > news >正文

find中的-exec参数

1、find中的-exec参数

在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行

find ./ -name "*.txt" -exec grep "bin" {} \;

在当前目录下(包含子目录),删除所有txt文件

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

Execute  command;  true  if 0 status is returned.  All following arguments to find are taken to be arguments to the command until  an  argument  consisting of `;' is encountered.  The string `{}' is replaced by the current file name being processed  everywhere  it occurs in the arguments to the command, not just in arguments where it is alone.

 

-exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。

 

 

 

{ }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中;
-exec一直到 \; 是关键字,代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作

 

因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。

 

在Linux bash shell中,语句中的分号一般用作代码块标识

单行语句一般要用到分号来区分代码块,例如:

weblogic@pmtest:/$if [ "$PS1" ]; then echo test is ok; fi
test is ok

该脚本或命令行中,需要两个分号才为正确的语句,第一个分号是then 前的分号,用于标识条件块结束,第二个分号在fi前,用于标识then块结束,如果缺少这两个分号,则程序执行错误。

 

以上,来自鸟哥[http://linux.vbird.org/linux_basic/0220filemanager.php]的相关介绍2、shell的内置命令命令exec

#!/bin/ksh

export LOG=/tmp/test.log

exec >> $LOG 2>&1

ls -l kevin.txt

exit 0

exec [arg]

If arg is present, executes arg in place of this shell.

(arg will replace this shell).

shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。

因此,如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也就退出了。为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用点处可以用bash a.sh,(a.sh就是存放该命令的脚本),这样会为a.sh建立一个sub shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。

source命令或者”.”,不会为脚本新建shell,而只是将脚本包含的命令在当前shell执行。

不过,要注意一个例外,当exec命令来对文件描述符操作的时候,就不会替换shell,而且操作完成后,还会继续执行接下来的命令。

exec 3<&0:这个命令就是将操作符3也指向标准输入。

转载于:https://www.cnblogs.com/sidesky/p/8967361.html

相关文章:

  • 再次解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException
  • 学习笔记——悬线法
  • 8.dockerfile之CMD指令
  • Mysql Programming CS 155P笔记(七) Dynamic SQL
  • JMS学习六(ActiveMQ消息传送模型)
  • linux常用命令:find 命令参数详解
  • MySQL Route负载均衡与读写分离Docker环境使用
  • linux 下 mysql-5.5.8 安装
  • 网络流24题~飞行员配对方案问题
  • vs code 插件收集
  • 编程语言的介绍
  • java并发编程——通过ReentrantLock,Condition实现银行存取款
  • Qt QListWidget实现图片缩略图列表
  • 数字证书了解
  • [Java算法分析与设计]--线性结构与顺序表(List)的实现应用
  • Angular 响应式表单 基础例子
  • Druid 在有赞的实践
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript创建对象的四种方式
  • JavaScript新鲜事·第5期
  • Java程序员幽默爆笑锦集
  • PaddlePaddle-GitHub的正确打开姿势
  • underscore源码剖析之整体架构
  • Webpack 4x 之路 ( 四 )
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 给第三方使用接口的 URL 签名实现
  • 码农张的Bug人生 - 初来乍到
  • 前端相关框架总和
  • 前端学习笔记之观察者模式
  • 日剧·日综资源集合(建议收藏)
  • 听说你叫Java(二)–Servlet请求
  • 我有几个粽子,和一个故事
  • 《码出高效》学习笔记与书中错误记录
  • #13 yum、编译安装与sed命令的使用
  • #微信小程序(布局、渲染层基础知识)
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (NSDate) 时间 (time )比较
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (四)Controller接口控制器详解(三)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)编辑寄语:因为爱心,所以美丽
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .gitignore文件_Git:.gitignore
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET下的多线程编程—1-线程机制概述
  • .ui文件相关
  • ??如何把JavaScript脚本中的参数传到java代码段中