Xargs 批量处理命令

 

xargs是实现批量处理最方便的方法,掌握xargs能省下写许多不必要的脚本。下面已几个例子说明(某些只适用于GNU xargs):

  • 删除所有.txt文件,可以在子目录下:find . -name "*.txt" | xargs rm
  • 打包一个目录下所有.pl文件,可在深层子目录:find . -name "*.pl" | xargs tar -zcf perl.tar.gz
  • 提交一个文件所包含的所有命令(一个命令一行):cat myfile.sh | xargs -i echo qsub {} | sh
  • kill所有满足某个匹配的进程:ps -ax | awk '/something/{print $1}' | xargs kill
  • 批量文件重命名(*.txt->*.bak):find . -name "*.txt" | sed "s/\.txt$//" | xargs -i echo mv {}.txt {}.bak | sh
  • 将一个命令运行100次(比如做bootstrap):awk 'BEGIN{for(i=1;i<=100;++i)print i}' | xargs -i echo qsub -o {}.out -e {}.err somecmd -output {}.out | sh



这里用echo...sh是为了防止敲错命令。使用时先不加sh,把命令打印到屏幕上,确认无误后加sh真正执行。

原文地址:https://www.cnblogs.com/buttonwood/p/shell.html