여러 파일의 내용을 하나의 파일에 추가하는 방법
다섯 파일의 내용을 그대로 하나의 파일로 복사하고 싶습니다. 각 파일마다 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
'Programing' 카테고리의 다른 글
날짜에 하루 추가 (0) | 2020.06.09 |
---|---|
div 내의 모든 양식 요소를 사용하지 않도록 설정 (0) | 2020.06.09 |
macOS에서 Docker 데몬에 연결할 수 없습니다 (0) | 2020.06.09 |
코드 골프 : 레이저 (0) | 2020.06.09 |
파이썬에서 정수를 이진수로 변환 (0) | 2020.06.09 |