Shell脚本中使用for循环和cat命令实现按顺序合并文件
工作目录下面有mydoc1.txt,mydoc2.txt...mydoc41.txt,本来想用sed排列依次取值排序,然后用cat来合并这些文件,发现达不到预期效果,合并令如下所示:
ls-lF*.txt|sed -n'/mydoc1/,/mydoc41/p'|xargs-icat{}>>mynew.txt
发现用其命令达不到预期效果,后来经检查发现,问题应该出现在sed排序上面,它仍然是按照位数来进行排序,并没有智能的按照范围来排序,sed取值命令如下:
ls-lF*.txt|sed-n'/mydoc1/,/mydoc41/p'
命令显示结果如下所示:
-rw-r--r--1rootroot 0Oct1213:38mydoc10.txt -rw-r--r--1rootroot 0Oct1213:38mydoc11.txt -rw-r--r--1rootroot 0Oct1213:38mydoc12.txt -rw-r--r--1rootroot 3Oct1214:48mydoc13.txt -rw-r--r--1rootroot 0Oct1213:38mydoc14.txt -rw-r--r--1rootroot 0Oct1213:38mydoc15.txt -rw-r--r--1rootroot 0Oct1213:38mydoc16.txt -rw-r--r--1rootroot 0Oct1213:38mydoc17.txt -rw-r--r--1rootroot 0Oct1213:38mydoc18.txt -rw-r--r--1rootroot 0Oct1213:38mydoc19.txt -rw-r--r--1rootroot 0Oct1213:38mydoc1.txt -rw-r--r--1rootroot 0Oct1213:38mydoc20.txt -rw-r--r--1rootroot 0Oct1213:38mydoc21.txt -rw-r--r--1rootroot 0Oct1213:38mydoc22.txt -rw-r--r--1rootroot 0Oct1213:38mydoc23.txt -rw-r--r--1rootroot 0Oct1213:38mydoc24.txt -rw-r--r--1rootroot 0Oct1213:38mydoc25.txt -rw-r--r--1rootroot 0Oct1213:38mydoc26.txt -rw-r--r--1rootroot 0Oct1213:38mydoc27.txt -rw-r--r--1rootroot 0Oct1213:38mydoc28.txt -rw-r--r--1rootroot 0Oct1213:38mydoc29.txt -rw-r--r--1rootroot 0Oct1213:38mydoc2.txt -rw-r--r--1rootroot 0Oct1213:38mydoc30.txt -rw-r--r--1rootroot 0Oct1213:38mydoc31.txt -rw-r--r--1rootroot 0Oct1213:38mydoc32.txt -rw-r--r--1rootroot 0Oct1213:38mydoc33.txt -rw-r--r--1rootroot 0Oct1213:38mydoc34.txt -rw-r--r--1rootroot 0Oct1213:38mydoc35.txt -rw-r--r--1rootroot 0Oct1213:38mydoc36.txt -rw-r--r--1rootroot 0Oct1213:38mydoc37.txt -rw-r--r--1rootroot 0Oct1213:38mydoc38.txt -rw-r--r--1rootroot 0Oct1213:38mydoc39.txt -rw-r--r--1rootroot 2Oct1214:48mydoc3.txt -rw-r--r--1rootroot 0Oct1213:38mydoc40.txt -rw-r--r--1rootroot 6Oct1214:48mydoc41.txt
所以用如下命令来实现需求:命令如下所示:
for((i=1;i<=41;i++))doechomydoc$i.txt;done|xargs-icat{}>>mynew.txt