我有 n 个文件,我已将文件名存储在列表中,我想将它们组合起来。我正在手动执行此操作,即如果 n=3
cat ${filename[1]} ${filename[2]} ${filename[3]} > newfile
如果文件内容如下:
filename[1]:
line1
line2
filename[2]:
line3
line4
filename[3]:
line5
line6
我希望新文件有
newfile:
line1
line2
line3
line4
line5
line6
我怎样才能自动执行此操作,即对于任意数量的文件“n”,我想按顺序组合它们,就像我在这里手动对三个文件所做的那样
答案1
您可以使用“@”,例如:
$ files=( /tmp/a "/tmp/a file from windows" /tmp/myfile )
$ cat "${files[@]}" > newfile
'@' 扩展数组的全部内容。它与 类似,*
只是它将每个元素视为单独的元素,而*
将所有元素组合为一个元素。
答案2
最简单的方法是:
$ for i in {1..3}; do cat inputfile$i>>outputfile; done
答案3
这对于 来说是微不足道的zsh
。
% echo blah > a; echo asdf > b; echo harfjr > c;
% filenames=(a b c d e)
% print -l $filenames[1,3]
a
b
c
% cat $filenames[1,3]
blah
asdf
harfjr
% cat $filenames[1,3] > anewfile
% cat anewfile
blah
asdf
harfjr
% somenum=2
% print -l $filenames[1,$somenum]
a
b
%
如果外壳实际上是bash
或ksh
呃不知道。