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
어 모르겠어요.