当前位置: 首页 > Linux

linux中findxargs_0

时间:2023-04-06 11:06:54 Linux

exec参数过长。当使用find命令的-exec选项处理匹配到的文件时,find命令会将所有匹配到的文件传递给exec执行。但是有些系统对可以传给exec的命令长度有限制,所以find命令运行几分钟后,会出现overflow错误argumentlinetoolong。错误消息通常是“参数列太长”或“参数列溢出”。这就是xargs命令发挥作用的地方,尤其是find命令。find命令将匹配到的文件传递给xargs命令,而xargs命令一次只获取文件的一部分而不是全部,这与-exec选项不同。这样它就可以先处理第一批获取的文件,然后再处理下一批,依此类推。进程太多在某些系统中,使用-exec选项会启动一个相应的进程来处理每个匹配的文件,而不是一次性将所有匹配的文件作为参数执行;很多,系统性能下降的问题,所以效率不高;使用xargs命令时,只有一个进程。另外,使用xargs命令时,是一次获取所有参数还是分批获取,以及每次获取参数的个数,将根据该命令的选项和系统内核中对应的可调参数来决定。查询当前目录下所有权限为777的文件>查找。-烫发777|xargsls-al查询当前目录下所有.txt文件并输出到指定文件a.log(不换行)>find.-姓名*。文本|xargsecho>/tmp/a.logxargs只是将\n变成一个空格,所以可能会出现一些问题。比如文件名包含空格,这时候xargs就会出问题。使用-n指定单行输出的数目。-nnum后跟次数表示执行命令时一次使用的参数个数。默认是使用所有这些。查询当前目录下所有.txt文件并输出到指定文件b.log(withnewline)>find.-名称*.txt|xargs-n1echo>/tmp/b.log-n1Onlyoutputperline查询查找当前目录下所有具有读、写、执行权限的文件,并收回相应的写权限>find.-烫发777|xargschmodo-w查找当前目录下所有.txt文件,找出包含rumenz字符的字符串文件>find.-名称*.txt|xargsgrep-n"rumenz"查找当前目录下的所有.txt文件并移动到指定目录>find.-名称*.txt|xargs-icp-rf{}/tmp;添加-i参数,直接用{}替换管道前的标准输出内容。使用-i参数将默认的先前输出替换为{}。-I参数可以自定义上一个输出符号,自定义上一个输出占位符为[]>find。-名称*.txt|xargs-I[]cp-rf[]/tmp-p参数提示是否执行>find。-名称*.log|xargs-p-imv{}/tmp-p参数会提示你确认是否执行以下命令,y执行,n不执行。批量下载文件url.txt为需要下载的链接地址>caturl.txt|xargswget-c总结:什么时候用-i如果命令后面可以跟内容,没有目的路径,可以省略-i,否则要加。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门站Linux常用命令快速参考手册PDF下载3669页Vim参考手册PDF下载阿里云ECS运维Linux系统诊断PDF下载Docker速查手册PDF下载Linux学习笔记【强大总结值得一读】PDF下载shell简明教程PDF下载