Programing

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

lottogame 2020. 6. 9. 07:36
반응형

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


다섯 파일의 내용을 그대로 하나의 파일로 복사하고 싶습니다. 각 파일마다 cp를 사용하여 시도했습니다. 그러나 이전 파일에서 복사 한 내용을 덮어 씁니다. 나는 또한 시도했다

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

그리고 그것은 작동하지 않았다.

스크립트가 각 텍스트 파일 끝에 줄 바꿈을 추가하고 싶습니다.

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

어떻게합니까?


출력 파일에 cat쉘 재 지정 ( >) 과 함께 (연결을위한 축약 형) 명령 이 필요

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 명령을 실행하십시오. "+"는 하나의 인스턴스 만 cat생성됨을 의미합니다 (thx @gniourf_gniourf)

 >> output.file

다른 답변에서 설명한 것처럼 출력 내용 끝에 cated 컨텐츠를 추가하십시오.


특정 출력 유형이 있다면 다음과 같이하십시오.

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

모든 파일이 단일 디렉토리에있는 경우 간단하게 수행 할 수 있습니다.

cat * > 0.txt

1.txt, 2.txt, .. 파일은 0.txt로 이동합니다


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

952 파일을 하나로 결합해야했기 때문에이 페이지를 찾았습니다. 파일이 많은 경우이 기능이 훨씬 더 좋습니다. 이것은 당신이 필요로하는 많은 숫자에 대해 루프를 수행하고 0을 사용하여 0.txt의 끝에 추가하기 위해 각각 >>을 사용합니다.


모든 파일의 이름이 비슷하면 간단하게 할 수 있습니다.

cat *.log >> output.log

다른 옵션은 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

원본 파일에 인쇄 할 수없는 문자가 포함되어 있으면 cat 명령을 사용할 때 해당 문자가 손실됩니다. 'cat -v'를 사용하면 인쇄 할 수없는 문자가 보이는 문자열로 변환되지만 출력 파일에는 여전히 원본 파일의 실제 인쇄 할 수없는 문자가 포함되지 않습니다. 적은 수의 파일을 사용하면 인쇄 할 수없는 문자를 처리하는 편집기 (예 : vim)에서 첫 번째 파일을 열 수 있습니다. 그런 다음 파일 맨 아래로 이동하여 ": r second_file_name"을 입력하십시오. 인쇄되지 않는 문자를 포함하여 두 번째 파일을 가져옵니다. 추가 파일에 대해서도 마찬가지입니다. 모든 파일을 읽었 으면 ": w"를 입력하십시오. 결과적으로 첫 번째 파일에는 원래 파일과 읽은 파일의 내용이 포함됩니다.


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

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

3 개의 파일 내용을 하나의 파일에 추가하려면 다음 명령을 사용하는 것이 좋습니다.

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

반응형