텍스트 파일을 결합하는 방법? 경우 순서는 중요하지 않습니다. 병합 할

많은 문서를 txt로 저장했습니다. 함께 인쇄하여 먼저 단일 파일로 함께 인쇄하고 싶습니다. 이 경우 순서는 중요하지 않습니다.

병합 할 파일 이름을 입력하지 않고 폴더 내의 모든 txt 파일을 병합하는 솔루션을 원합니다.

명령이나 GUI로 할 수 있습니까?


나는 여기를 보았다 . 사용법을 모른다 join.



답변

cat출력 리디렉션과 함께 사용하십시오 . 구문 : cat file [file] [[file] ...] > joined-file.

두 개의 파일 만있는 예 (더 많은 것을 가질 수 있음) :

$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text

“많은 문서”가있는 경우 쉘 글 로빙 (패턴)을 사용하십시오.

cat input-files-dir/* > joined-file

그러면 해당 디렉토리의 모든 파일이 현재 디렉토리에 결합됩니다 (출력 파일 자체와 일치하지 않도록). 그것은 cat출력 리디렉션 의 사용 및 출력과 완전히 독립적입니다. Bash는 모든 파일을 인수로 제공합니다 cat.


파일 형식

종이와 테이프를 사용하는 것처럼 파일을 서로 붙이기 만하면됩니다. 이를 처리 할 수있는 실제 파일 형식은 신경 쓰지 않습니다. 텍스트 파일에는 작동하지만 PDF, ODT 등에는 작동하지 않습니다. 글쎄, 서로 붙어 있지만 더 이상 유효한 PDF / ODT는 아닙니다.


가입 순서

포이보스가 지적한 것처럼 쉘 글 로빙은 알파벳 순서로 파일 이름을 만듭니다. 이것이 Bash와 shell globbing이 작동하는 방식입니다.


에 대한 부록 input file is output file오류

입력 파일의 패턴이 출력되는 파일과 동일한 파일과 일치하면 오류가 발생합니다. 안전 기능입니다. 예:cat *.txt > out.txt 두 번째로 실행하면이 문제가 발생합니다.

당신이 할 수있는 일 :

  • 실제 입력 파일과 일치하고 출력 이름과 일치하지 않는보다 구체적인 패턴을 선택하십시오. 예 : *.txt출력 파일 output.out이있는 입력 파일 패턴 이 충돌하지 않습니다.
  • 다른 디렉토리에서 작업하십시오. 위의 예제에서는 별도의 input-files-dir디렉토리를 사용하여 모든 파일을 배치하고 현재 작업 디렉토리로 출력했습니다. 이 오류가 발생하지 않습니다.

답변

간단한 방법은 cat을 사용하는 것입니다.

cat file1 file2 > joined_file

방금 발행 cat file1 file2하면 표준 출력에 두 파일이 모두 표시됩니다. 를 사용 >하면 표준 출력을 파일로 리디렉션합니다. 다른 명령에서도 작동합니다.


답변

간단한 루프로 수행하십시오.

for i in *.txt; do cat "$i" >> complete.txt; done

>> 파일에 추가합니다.

참고 : 어떤 이유로 명령을 다시 실행 해야하는 경우을 제거해야합니다 complete.txt. 그렇지 않으면 파일을 자체에 쓰면 작동하지 않습니다.


답변

결합하려는 파일이 모두 끝날 .txt경우 간단하게 유지하십시오.

cat *.txt > combined.txt

디렉토리에 텍스트 파일 만 포함되어 있으면 간단합니다.

cat * > combined.txt

(일단 생성 한 combined.txt후에는 다시 확장 *하면 이상한 동작이 발생합니다).

디렉토리에서 다른 파일이 아닌 일부 파일을 선택하려면 파일 이름을 사용하여 원하는 파일을 구별하는 것이 가장 좋습니다. 그렇지 않다면, 당신은 멋지게 얻을 수 있습니다 find. 그러나 나는 당신이 그렇게 멀리 가야한다고 의심합니다.


답변

cipricus가 작성한 Thunar 사용자 지정 동작 스크립트 도 비슷한 Nautilus 스크립트 를 작성하도록 영감 을 주었으며이 주제에 대해이 Q & A를 보는 다른 사람들에게 유용 할 것으로 생각했습니다. 그래서 여기 있습니다 :

#!/bin/sh
#Nautilus Script to join selected text files in a single file and open the joined file with default text editor
#
IFS=$'\n'
FILENAME="JoinedFile_$(date +%Y-%m-%d-%H-%M-%S).txt"
cat "$@" > "$FILENAME"
xdg-open "$FILENAME"

답변

이는 Thunar의 사용자 지정 작업에 이러한 솔루션을 적용하는 것과 관련하여 다른 답변에 대한 보완 및 변형입니다.

그들 모두가 이런 식으로 사용 가능한 것은 아니지만 일부는 사용 가능합니다.

Thunar의 상황에 맞는 메뉴에서 선택한 파일병합 하는 것이 가장 흥미로운 것이라고 생각했습니다 .

이것은 gertvdijk답변 에 대한 주석에서 Sadi 가 제안한 것과 다른 변형입니다 .

   cat %N > JoinedFile

선택된 파일 만 합류합니다. 모양 조건을 텍스트 파일로 제한합니다.


특별 감사에 사디 그의 코멘트와 함께 나에게 제공되는 가장 명확하고 최대 – 투 – 포인트 솔루션 내 문제.

나는 gertvdijk대답 을 결정적인 것으로 받아 들였다 . 그것은 Sadi의 의견에 대한 기회 일뿐만 아니라 다른 사람들에게 더 가치있는 것으로 보이며, 논쟁의 여지가 있고 완전한 솔루션을 제공합니다 (CLI 읽기 기술보다 다소 높음).


답변

당신은 find또한 명령을 시도 할 수 있습니다

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

.txt현재 디렉토리 내에서 파일을 찾고 cat각 발견 된 파일에서 명령을 실행 합니다. 마지막으로 전체 출력이 파일 이름으로 리디렉션되었습니다 file(현재 직접 생성됨).

설명:

.                  # current directory

-name              # helps to find only .txt files.

-type f            # Only files

-exec cat {} +     # helps to run cat command on the founded .txt files.

>                  # Output redirection operator

file               # to store final output.