-exec和xargs的区别

-exec和xargs的区别

2010-11-27 星期六 晴朗

当你在命令行执行:

$find . -name ‘core‘ -type f -exec rm {} /;

时,find -exec 命令会对每个匹配的文件执行一个单独的rm操作(execute a separate rm for each one), 正如你手动敲入下面命令:

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

但是使用这种方式,如果有100个文件匹配了,那么就需要启100个进程,一个进程处理一个rm命令。一般来说,其越多进程,意味着越耗性能。我们可以换个思路,我们将要删除文件当作参数传递给rm不就可以了吗?也就是说:

rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...

改成:

rm ./bin/core ./source/shopping_cart/core ./backups/core

但是前提是后面的命令必须支持多参数。相有些命令,比如unzip,就不支持输入多个jar包,所以必须用-exec。
xargs,顾名思义,是对参数进行处理的命令。它的任务就是将输入行转换成下一个命令的参数列表。因此上面的find -exec命令可以改写成:

find . -name ‘core‘ -type f -print | xargs rm
时间: 2024-10-20 04:40:05

-exec和xargs的区别的相关文章

find -exec 与 xargs的区别与使用

我一个项目的代码上线,是先checkout出代码然后整体copy过去的,可以避免在线上直接svn拉代码时候影响服务. 其中有这么两句: find . -type d -name ".svn" | xargs rm -rf find script/ -type f -exec dos2unix -o {} \; 感觉xargs和exec很像,就学习了一下两者的使用和区别. -exec 1.参数是一个一个传递的,传递一个参数执行一次rm 2.文件名有空格等特殊字符也能处理 -xargs 1

find命令处理之exec与xargs区别

对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令.{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在命令中还有它用途,所以就用一个\来限定表示这是一个分号而不是表示其它意思. -ok: 和-exec的作用相同,格式也一样,只不过以一种更为安全的模式来执行该参数所给出的shell给出的这个命令之前,都会给出提示,让用户来确定是否执行. xargs 要结合管道来完成 格式:find [option] express |xargs co

SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVAR

转转转---js正则表达exec与match的区别说明

正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc","g") 其中pattern为表示表达式内容,如上表示匹配abc attributes:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i 2.第二种定义:/pattern/attributes. 如:var reg = /abc/g; 正则表达的规则一些规则在此不再说明,只记录exe

javascript正则表达式exec()与match()的区别说明

本篇文章主要是对js正则表达exec与match的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 正则表达的规则一些规则在此不再说明,只记录exec和match的区别: 1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示: 如上定义 var reg = new RegExp("abc") ; var str = "3abc4,5abc6";reg.exec(str ); 2.match是字符串执行匹配正则表达式规则的方法

Linux系统服务管理 ntsysv,日志, exec,xargs , screen ,curl,

                linux系统服务管理 1. Linux系统服务管理 工具ntsysv 类似图形界面管理工具,如果没有该命令使用安装 安装:yum install -y ntsysv  常用服务:crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl chkconfig --list:列出所的服务以及在每个级别是否开启 chkconfig --add/del servicename 关

【Sqlserver】T-SQL中EXEC 与 SP_EXECUTESQL的 区别

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVARCHAR(10) NULL, Score FLOAT NULL, CONSTRAI

shell中sh, exec, source, fork, ./的区别

https://www.cnblogs.com/cord/p/9226498.html shell中sh, exec, source, fork, ./的区别 1,sh sh test.sh ? sh是通过创建子进程(subshell)去执行脚本,父进程无法使用子进程中的变量,而子进程对环境变量的修改也不会影响到父进程.父进程中的局部变量子进程也无法使用,子进程会继承父进程的环境变量; ? 脚本不需要执行权限 2,exec exec + command ./test.sh exec ? 使用ex

find参数exec、管道符|、xargs的区别

1.这三个命令都可以将前面的输出做为后面的输入. 2.他们对于前面的输出,处理方式不同. find . -name "*.sh" -exec cat {} \; find . -name "*.sh" |cat find . -name "*.sh" |xargs cat 示例一: [[email protected] temp]# cat ex.sh a.txt b.txt c.txt d.txt 5.txt [[email protected