xargs tutorial

man

buid and execute command lines from standard input
reads data from standard input (stdin) and executes the command (supplied to it as argument) one or more times based on the input read

使用

arg 是参数,xargs X参数? 这样会好理解一些

使用方式:

1
xargs [OPTION]... COMMAND [INITIAL-ARGS]...

运行COMMAND ,参数是 INITIAL-ARGS(如果有的话)以及可以是使用xargs 读取到的文件或者其他输出

什么情况需要选用这个命令?

看几条对比的命令

1
2
find . -name "*.md" |xargs grep thought # 这个命令是将找的文件的内容里面过滤字样 thought
find . -name "*.md" |grep weekly-0519.md # 这个命令是将找到的文件,过滤出文件名中带有字样 thought
1
xargs -a input.txt ls -ltr #input.txt 里面有本目录下的几个文件名

常见用法

case 1 [通过xargs 使命令执行根据参数列表执行多次]

-L [number]

  • 等同于用法 -l[line-number]
1
2
xargs -a keyword.txt -L 1 find . -name
xargs -a keyword.txt -l1 find . -name

参数是按行展开的,每行一个参数,表示每次传递number行的参数给command

-n [number]

当参数是按空格间隔开的时候,想命令按空格为间隔,读取参数列表,每次读取number 个参数给后面的command

例如:从stdin 里面,每次读取一个参数给find 查找

case 2

-a

xargs 会读取文件作为输入

1
xargs -a input.txt ls -lart # 从文件里面读取参数

case 3

-p

迫使每次执行command 之前询问你是否执行这个命令
例如:

1
xargs -a input.txt -l1 -p find . -name

示例

-i

1
ls |grep weekly |xargs -i mv {} weekreport

参考