首页 > 其他分享 > find -exec 命令后面的\;和+

find -exec 命令后面的\;和+

时间:2023-08-18 18:12:14浏览次数:40  
标签:... log exec 后面 cat 命令 find

一个-exec只能执行一个命令,而且必须在命令后面加上终结符,终结符有两个:“;”和“+”。
其中“;”会对每一个find到的文件去执行一次cmd命令。而”+“让find到的文件一次性执行完cmd命令。为什么必须有终结符?因为一个find后面可以有多个-exec cmd,所以必须要有终结符分割他们。如果不加,会包缺少参数。

[work@jkz ~]$ find . -maxdepth 1 -type f -name "*.log" -exec echo {} \; -exec echo {} +

./server02.log
./server03.log
./server00.log
./server01.log
./timing.log
./server.log
./server02.log ./server03.log ./server00.log ./server01.log ./timing.log ./server.log
 

为什么要加“\”?
“;”是shell的命令分隔符,如果只有“;”,那么这条命令就会被shell截断。

[work@jkz ~]$ find . -maxdepth 1 -type f -name "*.log" -exec echo {} ;

find: missing argument to `-exec'

https://www.jianshu.com/p/ea096af9d765

https://blog.csdn.net/leonzheng/article/details/105405554

 

使用“ +”(加号)和“;”有什么区别?(分号)在-exec命令中?

-exec ... \;将一个接一个地运行。因此,如果您有三个文件,则exec行将运行3次。

-exec ... {} +是对于可以在同一时间取一个以上的文件的命令(例如catstatls)。找到的文件findxargs命令一样链接在一起。这意味着减少分叉,对于较小的操作,可能意味着大幅提高速度。

这是一个性能演示,其中包含10,000个空文件。

$ mkdir testdir
$ touch testdir/{0000..9999}

$ time find testdir/ -type f -exec cat {} \;
real    0m8.622s
user    0m0.452s
sys     0m8.288s

$ time find testdir/ -type f -exec cat {} +
real    0m0.052s
user    0m0.015s
sys     0m0.037s

同样,这仅适用于可以使用多个文件名的命令。您可以通过查看其手册来确定命令是否类似。这是来自的摘要man cat

SYNOPSIS
       cat [OPTION]... [FILE]...

省略号[FILE]...表示可以使用多个文件。

+只能在单个命令上使用,并且{}一行中必须恰好有一个。\;可以与多个零对多组操作。

 

 

转自:https://qastack.cn/ubuntu/558817/what-is-the-difference-between-using-plus-and-semicolon-in-exec-com

 

 

标签:...,log,exec,后面,cat,命令,find
From: https://www.cnblogs.com/tiancai/p/17641231.html

相关文章

  • Could not find a generator for route RouteSettings("search", null) in the _Widge
    遇到这个错误消息意味着在您的Flutter应用程序中没有为名为"search"的路由定义路由生成器。要解决此问题,您需要定义一个路由生成器来处理名为"search"的路由。以下是如何在Flutter应用程序中定义路由生成器的示例:首先,定义一个路由生成器函数,该函数接受 RouteSettings 对象并返回......
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo
    问题描述想要在linux系统里面使用mysql时,出现了这样的报错信息问题解决mysql>setglobalvalidate_password_policy=LOW;mysql>setglobalvalidate_password_length=9;使用这两个命令,将密码的限制进行修改,然后执行修改密码的命令:ALTERUSERUSER()IDENTIFIEDBY'wing......
  • C# 数字后面有个M字母 所代表的含义,还有哪些类似的字母
    在C#中,数字后面的"M"表示该数字是一个双精度(decimal)类型的数值。双精度类型是C#的一种数据类型,用于存储较大范围和更高精度的十进制数值。通过在数字后面添加"M",可以告诉编译器将该数字解析为双精度类型。例如,你可以使用以下方式声明一个双精度类型的数值:decimalnumber=10.5M;......
  • 【已解决】protoc-gen-go: program not found or is not executable Please specify a
    命令(base)➜pbprotoc--go_out=.helloworld.proto报错信息MACm1环境下protoc-gen-go:programnotfoundorisnotexecutablePleasespecifyaprogramusingabsolutepathormakesuretheprogramisavailableinyourPATHsystemvari......
  • python 运行 execjs 出现错误 UnicodeEncodeError: 'gbk' codec can't encode charac
    异常解读该异常的格式一般为:UnicodeEncodeError: 'gbk'codeccan'tencodecharacter'\xfe'inpositio该异常出现的场景为在Windows电脑下使用Pythonexecjs运行指定的JS文件,但JS文件中包含中文。异常解决方案该问题解决需要修改你电脑Python安装目录下 lib......
  • 在core项目下通过Dapper对mysql执行批量操作 报at MySql.Data.MySqlClient.MySqlComma
     在core项目下通过Dapper对mysql执行批量操作一直报异常  报PushService=>UpdateKeyWordProductCountTask=>错误信息:Fatalerrorencounteredduringcommandexecution.;;;堆栈信息:atMySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehaviorbehavior)at......
  • 软件测试|Docker exec命令详细使用指南
    简介Dockerexec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。本文将详细介绍Dockerexec命令的用法和示例,帮助大家更好地理解和使用这个命令。Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们调试、排查问题或......
  • linux中find命令用法
    1、find test   在当前工作目录中查找名称为test的所有文件2、find/home-nametest  查找/home目录下的所有文件,名称为test3、find/home -inametest   找到名称为test的所有文件,并在/home目录中同时包含大写和小写字母4、find/-typed-nametest   在/......
  • 编译greenDao的时候出现KaptExecution:java.lang.reflect.InvocationTargetException
    一、概述在编译greendao的时候出现了以下异常。Executionfailedfortask':common_base:kaptDebugKotlin'.>Afailureoccurredwhileexecutingorg.jetbrains.kotlin.gradle.internal.KaptExecution>java.lang.reflect.InvocationTargetException(noerrormes......
  • com.alibaba.excel.exception.ExcelWriteDataConvertException: Can not find 'Conver
    这个异常是由于使用阿里巴巴的EasyExcel库时,没有找到映射为Map类型的数据转换器所导致的。在使用EasyExcel进行Excel文件读写时,需要指定正确的数据转换器以实现对象与Excel单元格的相互转换。对于Map类型的数据,EasyExcel需要知道如何将Map转换为Excel中的单元格数据,因此需要自定义......