여러 파일의 내용을 하나의 파일에 추가하는 방법
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
'programing' 카테고리의 다른 글
이 앱은 IDFA(Advertising Identifier)를 사용하고 있습니까?- AdMob 6.8.0 (0) | 2023.04.11 |
---|---|
변수가 Bash에 설정되어 있는지 확인하는 방법 (0) | 2023.04.11 |
unix - 파일의 head 및 tail (0) | 2023.04.11 |
Apache POI에서 열 너비 설정 (0) | 2023.04.11 |
$.ajax(jQuery 또는 Zepto)를 사용하여 일련의 객체를 POST하려면 어떻게 해야 합니까? (0) | 2023.04.06 |