【发布时间】:2012-02-15 05:41:29
【问题描述】:
设置:
我有数百个文件,命名为input0.dat、input1.dat、...、input150.dat,我需要使用一些命令cmd(基本上合并所有文件的内容)来处理这些文件。 cmd 将输出文件名作为第一个选项,然后是所有输入文件名的列表:
./cmd output.dat input1.dat input2.dat [...] input150.dat
问题:
问题是由于内存问题,脚本只能处理大约 10 个文件(不要怪我)。因此,不要使用bash 通配符扩展,如
./cmd output.dat *dat
我需要做类似的事情
./cmd temp_output0.dat file0.dat file1.dat [...] file9.dat
[...]
./cmd temp_outputN.dat fileN0.dat fileN1.dat [...] fileN9.dat
之后我可以合并临时输出。
./cmd output.dat output0.dat [...] outputN.dat
如何在bash 中高效地编写脚本?
我试过了,没有成功,例如
for filename in `echo *dat | xargs -n 3`; do [...]; done
问题是这再次同时处理所有文件,因为xargs 的输出行被连接起来了。
编辑:请注意,调用cmd时,我需要指定输出文件名作为第一个命令行参数!
【问题讨论】:
标签: bash shell batch-processing