n個のファイルを結合するには、catコマンドを使用してください。

n個のファイルを結合するには、catコマンドを使用してください。

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

これを自動化するにはどうすればよいですか?つまり、ファイルの数にかかわらず、ここで3つのファイルに対して手動で行ったように、「n」について順番に結合したいと思います。

答え1

たとえば、「@」を使用できます。

$ files=( /tmp/a "/tmp/a file from windows" /tmp/myfile )
$ cat "${files[@]}" > newfile

'@' は配列の内容全体を拡張します。*各要素を別々の要素として扱い、*すべての要素を1つの要素に結合することを除けば、これに似ています。

答え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どうかはわかりません。

関連情報