programing

여러 파일의 내용을 하나의 파일에 추가하는 방법

batch 2023. 4. 11. 21:49
반응형

여러 파일의 내용을 하나의 파일에 추가하는 방법

5개의 파일의 내용을 그대로 1개의 파일로 복사하고 싶습니다.각 파일에 대해 cp를 사용하여 시도했습니다.그러나 이전 파일에서 복사한 내용을 덮어씁니다.나도 노력했어

paste -d "\n" 1.txt 0.txt

효과가 없었습니다.

각 텍스트 파일 끝에 줄바꿈을 추가해 주세요.

예: 파일 1.txt, 2.txt, 3.txt.0.txt에 1,2,3의 내용을 넣습니다.

제가 그걸 어떻게 합니까?

필요한 것은cat(connectinate의 줄임말) 명령어, 셸 리다이렉션(>)를 출력 파일에 입력합니다.

cat 1.txt 2.txt 3.txt > 0.txt

또 다른 방법은 저처럼 이 게시물을 우연히 접하게 되신 분들을 위해find -exec:

find . -type f -name '*.txt' -exec cat {} + >> output.file

제 경우 여러 개의 서브디렉토리를 검색할 수 있는 보다 견고한 옵션이 필요했기 때문에find. 분해:

find .

현재 작업 디렉토리 내를 확인합니다.

-type f

디렉토리 등이 아닌 파일에만 관심이 있습니다.

-name '*.txt'

이름별로 결과 세트 축소

-exec cat {} +

각 결과에 대해 cat 명령을 실행합니다."+"는 의 1개의 인스턴스만을 의미합니다.cat생성되었습니다(thx @gniourf_gniourf).

 >> output.file

다른 답변에서 설명한 바와 같이 출력 파일의 끝에 cat-ed 내용을 추가합니다.

특정 출력 유형이 있으면 다음과 같은 작업을 수행합니다.

cat /path/to/files/*.txt >> finalout.txt

모든 파일의 이름이 같은 경우는, 다음의 조작을 간단하게 실시할 수 있습니다.

cat *.log >> output.log

모든 파일이 1개의 디렉토리에 있는 경우는, 다음의 조작을 간단하게 실시할 수 있습니다.

cat * > 0.txt

파일 1.txt, 2.txt, ..는 0.txt에 들어갑니다.

for i in {1..3}; do cat "$i.txt" >> 0.txt; done

952개의 파일을 하나로 묶어야 했기 때문에 이 페이지를 찾았습니다.파일이 많으면 이게 훨씬 더 잘 작동한다는 걸 알았어요.그러면 필요한 수만큼 루프가 실행되며 각 숫자는 0.txt 끝에 부가하기 위해 >>를 사용하여 cat됩니다.

편집:

코멘트에 기재되어 있습니다.

cat {1..3}.txt >> 0.txt

또는

cat {0..3}.txt >> all.txt

또 다른 옵션은sed:

sed r 1.txt 2.txt 3.txt > merge.txt 

아니면...

sed h 1.txt 2.txt 3.txt > merge.txt 

아니면...

sed -n p 1.txt 2.txt 3.txt > merge.txt # -n is mandatory here

또는 리다이렉트 없이...

sed wmerge.txt 1.txt 2.txt 3.txt

마지막 줄 쓰기도 마찬가지입니다.merge.txt(없음)wmerge.txt!) 를 사용할 수 있습니다.w"merge.txt"파일명과 혼동하지 않도록 합니다.-n사일런트 출력에 사용합니다.

물론 와일드카드를 사용하여 파일 목록을 줄일 수도 있습니다.예를 들어 위의 예시와 같이 번호가 매겨진 파일의 경우 다음과 같이 중괄호로 범위를 지정할 수 있습니다.

sed -n w"merge.txt" {1..3}.txt

파일에 헤더가 포함되어 있고 출력 파일에서 헤더를 제거하려면 다음을 사용할 수 있습니다.

for f in `ls *.txt`; do sed '2,$!d' $f >> 0.out; done

모든 (텍스트-) 파일을 하나로 통합

find . | xargs cat > outfile

xargs는 find의 출력 행을 cat의 인수로 만듭니다.

find에는 -name '*.txt' 또는 -type과 같은 옵션이 많이 있습니다.

파이프라인에서 사용하고 싶다면 체크해야 합니다.

원본 파일에 인쇄할 수 없는 문자가 포함되어 있는 경우 cat 명령어를 사용하면 해당 문자가 손실됩니다.cat -v'를 사용하면 인쇄 불가능 문자열이 표시 가능한 문자열로 변환되지만 출력 파일에는 인쇄 불가능 문자가 원래 파일에 포함되지 않습니다.파일 수가 적은 경우 인쇄되지 않는 문자를 처리하는 편집기(예: vim)에서 첫 번째 파일을 여는 방법도 있습니다.그런 다음 파일 맨 아래로 이동하여 ":r second_file_name"을 입력합니다.그러면 인쇄되지 않은 문자를 포함하여 두 번째 파일이 끌어옵니다.다른 파일에 대해서도 같은 작업을 수행할 수 있습니다.모든 파일을 읽으면 ":w" 라고 입력합니다.그 결과 첫 번째 파일에는 원래와 마찬가지로 읽혀진 파일의 내용이 포함됩니다.

다중 파일을 파일(텍스트)로 보냅니다.txt):

cat *.txt > textall.txt

3개의 파일의 내용을 1개의 파일에 추가하는 경우는, 다음의 커맨드를 사용하는 것이 좋습니다.

cat file1 file2 file3 | tee -a file4 > /dev/null

을 file4로 ./dev/null.

언급URL : https://stackoverflow.com/questions/18006581/how-to-append-contents-of-multiple-files-into-one-file

반응형