如何使用ls和xargs对连续文件进行操作?

问题描述:

我有一个完整的文件所在的文件夹:如何使用ls和xargs对连续文件进行操作?

ls *101* | grep -v "discard"

给了我这样的:

test101v1.nc 
test101v2.nc 
test101v3.nc 

现在,我需要连接这些文件,这通常我可以做到用这样的:

ncrcat test101v1.nc test101v2.nc test101v3.nc out.nc 

我该如何在shell脚本中使用xargs

我可以使用for循环,但我想知道是否可以以更聪明的方式完成?

试着这么做ls *101* | grep "discard" | xargs ncrcat -o out.nc

,或者您可以使用find命令:

find . -type f \(-name "*101" ! -name "*discard*" \) | xargs ncrcat -o out.nc

另一种方法是使用数组一样:ncrcat $(ls *101* | grep "discard") -o out.nc

为什么要使用xargs的?有什么问题

ls *101* | grep -v "discard" | ncrcat -o out.nc