많은 문서를 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.