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

이를 자동화하려면 어떻게 해야 합니까? 즉, 파일 수에 관계없이 '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어 모르겠어요.

관련 정보