使用 cat 命令组合 n 个文件

使用 cat 命令组合 n 个文件

我有 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
% 

如果外壳实际上是bashksh呃不知道。

相关内容