exec与xargs区别

没有哪个更好哪个更不好 复习一下

exec是对每个找到的文件执行一次命令,除非这单个的文件名超过了几k,否则不
会出现命令行超长出报错的问题。

而xargs是把所有找到的文件名一股脑的转给命令。当文件很多时,这些文件名组合成的命
令行参数很容易超长,导致命令出错。

find | xargs 这种组合在处理有空格字符的文件名时也会出错,因为这时执行的命令
已经不知道哪些是分割符、哪些是文件名中的空格! 而用exec则不会有这个问题。

$touch test/‘test zzh‘

$find test/ -name *zzh
test/test zzh

$find test/ -name *zzh |xargs rm
rm: cannot remove `test/test‘: No such file or directory
rm: cannot remove `zzh‘: No such file or directory

$find test/ -name *zzh -exec rm {} \;

相比之下,也不难看出各自的缺点
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \; 作为命令的结束符,书写不便。
3、xargs 不能操作文件名有空格的文件;

综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,
那么使用 xargs比较方便; 否则,就要用 exec了。

时间: 2024-10-05 17:08:54

exec与xargs区别的相关文章

find命令处理之exec与xargs区别

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

-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 ... 但是使用这种方式,如

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 关

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

linux find查找并拷贝 exec xargs区别

-exec    1.参数是一个一个传递的,传递一个参数执行一次rm    2.文件名有空格等特殊字符也能处理-xargs     1.一次将参数传给命令,可以使用-n控制参数个数    2.处理特殊文件名需要采用如下方式:    find . -name "*.txt" print0 |xargs -0 rm {} find /opt/test/ -type f -name "*.txt" -exec cp {} /tmp \; find /opt/test/ -

Linux命令find及exec、xargs的使用

由于f i n d具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( N F S ),f i n d命令在该文件系统中同样有效,只要你具有相应的权限. F i n d命令的一般形式为:find pathname -options [-print -exec -ok] 该命令的参数:pathname:  find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print:find命令将匹配的文件输出到标准输出.-exec

exec 与 xargs

find /var/log/ -type f -mtime +10 查找该文件夹下超过10天的文件 find /var/log/ -type f -mtime +10 -exec cp {} {}.lak \; exec的用法 -exec .......... \; find /var/log/ -type f mtime +10|xargs  -i cp  {}  {}.l xargs中类似于exec的功能,将多出一个类似于...l的文件 ls | xargs

管道和xargs区别

一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别 NewUserFF 写道: 懒蜗牛Gentoo 写道: 管道是实现"将前面的标准输出作为后面的标准输入" xargs是实现"将标准输入作为命令的参数" 你可以试试运行: 代码: echo "--help"|cat echo "--help"|xargs cat 看看结果的不同. 试过了,依然不是很确定的明白到底是什么意思,

fork exec source的区别

参考:http://www.cnblogs.com/bkygg/p/5023072.html 1:fork  运行的时候开一个sub_shell 执行调用的脚本,sub_shell执行的时候,parent_shell还在.sub_shell执行完毕后返回parent_shell.sub_shell从parent_shell继承环境变量.但是sub_shell中的变量不会带回parent_shell.在子命令执行完后再执行父命令,子级的环境变量不会影响到父级 2:exec 执行子级的命令后,不再执