X 파일이 포함된 폴더에서 Y 파일(여기서 X > Y)을 텍스트 파일로 연결해야 합니다. 연결해야 하는 파일 이름(Y 파일)이 있습니다.
답변1
이 cat
명령( man cat
자세한 내용은 참고자료 참조)을 사용하여 텍스트 파일을 연결할 수 있습니다.
새로운 파일을 만들고 싶다면
cat [FILE1] [FILE2]... > new_file
또는 기존 파일에 추가하려면 다음과 같이 사용하십시오.
cat [FILE1] [FILE2]... >> file
답변2
파일에 Y 개의 파일 이름이 나열되어 있는 경우 list
및 의 간단한 조합으로 충분합니다.xargs
cat
xargs cat <list >>concatenation_of_files
주의해서 파일을 한 줄에 하나씩 나열하는 경우(파일 이름의 공백 문제를 피하기 위해) -d
구분 기호 옵션을 추가하기만 하면 됩니다.
xargs -d'\n' cat <list >>concatenation_of_files
(이것은 concatenation_of_files
존재하지 않거나 처음에는 비어 있다고 가정합니다.)
답변3
대답은 bash를 사용하는 것입니다.
디렉터리에서 json 파일을 연결한다고 가정해 보겠습니다.
cat *json > all.json
하위 디렉터리 포함:
shopt -s globstar
cat **/*json > all.json
그러나 수천에서 수백만 개의 파일이 있는 경우 다음과 같은 문제가 발생합니다.
bash: /bin/cat: Argument list too long
이 경우 다음을 수행하면 현재 처리 중인 파일도 출력됩니다.
shopt -s globstar
rm concat.json
find . -path "**/*.json" | while read -r file; do
echo -ne "\\r$file"
cat "$file" >> concat.json
done
이 질문에 다음과 같이 게시되었습니다.이 다른 질문은 마감되었습니다.
답변4
(이것이 정말 늦었다는 것을 알고 있으며 실제로 답변이 아니라 이 작업을 수행하는 경우 제안입니다.)
연결하려는 파일과 동일한 파일 확장자를 사용하지 마십시오.
cat *.json > all.json.txt
그럼 돌아와...
mv all.json.txt all.json
이것이 문제의 문제를 해결하는지 실제로는 확실하지 않지만 루프 문제를 피할 수 있습니다.