脚本网 > 脚本专栏 > linux shell > shell中对xargs命令传参进行编辑

shell中对xargs命令传参进行编辑

admin linux shell

以文件解压为例,将当前路径下的所有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传参内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!