将前一个命令的输出做为标准输入传给后面的命令,不会用到任何中间文件与缓冲区。函数
将前一个命令的输出做为命令行参数传给后面的命令。命令行
> 批量建立文件 pi@raspberrypi:~/test $ touch {1..9}.txt pi@raspberrypi:~/test $ ls 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt > 修改 pi@raspberrypi:~/test $ ls *.txt | xargs -n1 -i{} mv {} {}_bak pi@raspberrypi:~/test $ ls 1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak 6.txt_bak 7.txt_bak 8.txt_bak 9.txt_bak
find命令中-exec参数将查询结果经过命令行参数传递给后面的命令。code
-exec与xargs不一样的是:-exec是将结果逐条传递给后面的命令,后面的命令逐条执行。xargs是将结果做为一个列表所有传递给后面的命令,后面的命令一次性执行参数串,能够经过xargs -p ls -l来查看即将要执行的完整的命令。排序
pi@raspberrypi:~/test $ find . -name "*txt*" |xargs -p ls -l rm ls -l rm ./4.txt ./9.txt ./2.txt ./1.txt ./6.txt ./7.txt ./8.txt ./3.txt ./5.txt ?...
目前已知的只能读取命令行参数的命令有:ls、rm。get
经过分析-exec与xargs的不一样,就会发现若是在find中使用-exec+ls -lrt的方式,列表并无进行排序,若想要排序,可以使用xargs+ls -lrt,不过要注意-exec与xargs区别test