shell中对xargs命令传参进行编辑
作者:不要影响我叠Q
本文主要介绍了shell中对xargs命令传参进行编辑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
以文件解压为例,将当前路径下的所有gz文件解压到同名的log文件中,解压命令如下所示:
ls *.gz| xargs -n 1 -P 4 -I {} bash -c 'zcat "{}" > $(echo "{}" | sed "s/gz$/log/g")'
执行结果如下图所示:
命令说明:
xargs -I {}占位的参数传递给后面的bash -c命令以进行复杂的字符串替换操作。
使用$()引用计算结果,在括号中完成文件名的编辑。括号中使用"{}"引用传入的文件名
sed "s/gz$/log/g"将echo传递的文件名中末尾的gz替换为log, gz$是正则表达式用于匹配后缀为gz的文件
也可使用下面的命令进行解压:
ls *.gz| xargs -n 1 -P 4 -I {} bash -c 'zcat "{}" > $(file="{}"; echo ${file::-3}.log)'
${file::-3}表示去掉文件名末尾的三个字符,即".gz"
运行结果和上述一致:
到此这篇关于shell中对xargs命令传参进行编辑的文章就介绍到这了,更多相关shell xargs传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!