파일을 연결하고 파일 사이에 빈 줄을 넣습니다.

파일을 연결하고 파일 사이에 빈 줄을 넣습니다.

동일한 확장명(예: .txt)을 가진 파일이 여러 개 있고 이를 연결하고 싶습니다. 사용 중이지만 cat *.txt > concat.txtconcat.txt에서 각 파일을 구별하기 위해 각 파일 사이에 새 줄을 추가하고 싶습니다.

다음과 같은 구현 대신 단일 bash 명령을 사용하여 이를 수행할 수 있습니까?이것?

감사해요

ベストアンサー1

명령이 아니라 간단한 한 줄입니다.

for f in *.txt; do cat -- "$f"; printf "\n"; done > newfile.txt

이 오류가 발생합니다.

cat: newfile.txt: input file is output file

그러나 적어도 GNU/Linux 시스템에서는 이를 무시할 수 있습니다. Stéphane Chazelas는 주석에서 분명히 다른 시스템에서는 이것이 무한 루프를 일으킬 수 있다고 지적했습니다. 따라서 이를 피하려면 다음을 시도해 보십시오.

for f in *.txt; do 
    [[ "$f" = newfile.txt ]] || { cat -- "$f"; printf "\n"; }
done > newfile.txt

.txt또는 루프에 포함되지 않도록 출력 파일에 확장자를 추가 하지 마십시오 (어쨌든 필요하지 않으며 전혀 차이가 없습니다).

for f in *.txt; do cat -- "$f"; printf "\n"; done > newfile

おすすめ記事