当前位置: 首页 > Linux

Linux输出转换命令xargs

时间:2023-04-07 01:38:27 Linux

一、基本用法xargs命令的作用是将标准输入转换为命令行参数。原因:大部分命令不接受标准输入作为参数,只能直接在命令行输入参数,导致无法使用管道命令传递参数。例如下面的echo不接受标准输出作为参数,可以用xargs转换:$echo"helloworld"|xargsechohelloworld2.参数-d指定分隔符xargs默认使用换行符和空格作为分隔符,将标准输入分解为命令行参数。$echo"一二三"|xargsmkdir上面代码中,mkdir会创建三个子目录,执行mkdir一二三。-d参数可以改变分隔符$echo-e"a\tb\tc"|xargs-d"\t"echoabc上面的命令指定制表符\t作为分隔符,因此a\tb\tc被转换为三个命令行参数。echo命令的-e参数表示解释转义字符。-p-t打印要执行的命令-p参数打印出要执行的命令,询问用户是否执行。$echo'一二三'|xargs-ptouchtouchonetwothree?...-t参数是打印出最终要执行的命令,不需要用户确认直接执行。$echo'一二三'|xargs-trmrm一二三-I作为别名传递参数如果xargs要给多个命令传递命令行参数,可以使用-I参数。[好像参数会被空格或者回车分割,然后命令会被重复执行,而不是被当作命令的多个参数]-I为每个命令行参数指定替换字符串。$catfoo.txtonetwothree$catfoo.txt|xargs-Ifilesh-c'回显文件;mkdirfile'onetwothree$lsonetwothree在上面的代码中,foo.txt是一个包含三行的文本文件。我们要为每个命令行参数执行两个命令(echo和mkdir),并使用-Ifile表示该文件是命令行参数的替换字符串。执行命令时,具体参数会替换回显文件中的两个文件;mkdir文件。-l-L指定多少行作为命令行参数$echo-e"a\nb\nc"|xargs-L1echoabc-n在一行中指定多项作为命令行参数$echo{0..9}|xargs-n2echo0123456789--max-procs多线程执行xargs默认只使用一个进程执行命令。如果该命令需要执行多次,则必须等待上一次执行完毕才能执行下一次。--max-procs参数指定使用多少个进程来并行执行命令。--max-procs2表示最多同时使用两个进程,--max-procs0表示不限制进程数。$泊坞窗ps-q|xargs-n1--max-procs0dockerkill上面命令表示同时关闭尽可能多的Docker容器,这样运行速度会快很多