태그 보관물: files

files

디렉토리의 모든 (텍스트) 파일을 하나로 병합하는 방법은 무엇입니까? 파일이 모두 한 텍스트의

14 개의 파일이 모두 한 텍스트의 일부입니다. 그것들을 하나로 병합하고 싶습니다. 그렇게하는 방법?



답변

cat대부분의 사람들이 파일을 표준 출력으로 출력하기 위해 사용하더라도 기술적으로 ( “연결”)해야 할 일입니다. 파일 이름을 여러 개 지정하면 파일 이름이 모두 순차적으로 출력 된 다음 새 파일로 리디렉션 할 수 있습니다. 모든 파일의 경우 그냥 사용하십시오 *(또는 /path/to/directory/*디렉토리에 없다면) 쉘은 모든 파일 이름으로 확장합니다

$ cat * > merged-file


답변

파일이 동일한 디렉토리에 있지 않은 경우 연결하기 전에 find 명령을 사용할 수 있습니다.

find /path/to/directory/ -name *.csv -print0 | xargs -0 -I file cat file > merged.file

파일이 이미 주문되어 있고 파일을 병합하여 분석하려는 경우 매우 유용합니다.


더 휴대 가능 :

find /path/to/directory/ -name *.csv -exec cat {} + > merged.file

파일 순서를 유지하거나 유지하지 않을 수 있습니다.


답변

명령

$ cat * > merged-file

실제로 병합에 ‘병합 파일’을 포함시켜 원치 않는 파일을 생성하는 바람직하지 않은 부작용이 있습니다. 이 문제를 해결하려면 병합 된 파일을 다른 디렉토리에 작성하십시오.

$ cat * > ../merged-file

또는 병합 된 파일을 무시하는 패턴 일치를 사용하십시오.

$ cat *.txt > merged-file


답변

여기에서 다른 사람들이 말하듯이 … 당신은 사용할 수 있습니다 cat

당신이 가지고 있다고 말할 수 있습니다 :

~/file01
~/file02
~/file03
~/file04
~/fileA
~/fileB
~/fileC
~/fileD

그리고 당신은 단지 원하는 file01file03fileAfileC:

cat ~/file01 ~/file02 ~/file03 ~/fileA ~/fileB ~/fileC > merged-file

또는 중괄호 확장을 사용하십시오.

cat ~/file0{1..3} ~/file{A..C} > merged-file

또는 더 멋진 버팀대 확장을 사용하는 경우 :

cat ~/file{0{1..3},{A..C}} > merged-file

또는 for루프 를 사용할 수 있습니다 .

for i in file0{1..3} file{A..C}; do cat ~/"$i"; done > merged-file


답변

pattern파일을 지정하고 다음과 같이 모든 파일을 병합 할 수 있습니다 .

cat *pattern* >> mergedfile


답변

또 다른 옵션은 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

마지막 줄은 또한 wmerge.txt가 아닌 merge.txt입니다. w “merge.txt”를 사용하여 파일 이름과 혼동을 피하고 자동 출력의 경우 -n을 사용할 수 있습니다.

물론 와일드 카드를 사용하여 파일 목록을 줄일 수도 있습니다. 예를 들어, 위 예제에서와 같이 번호가 매겨진 파일의 경우 다음과 같이 중괄호로 범위를 지정할 수 있습니다.

sed -n w"merge.txt" {1..3}.txt


답변