如何使用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