디스크에 파일 연결

디스크에 파일 연결

다음과 같은 이름의 파일이 여러 개 있다고 가정해 보겠습니다.

000001
000002
000003
...

이러한 각 파일은 csv파일입니다(이스케이프 문자를 포함할 수 있음). 이 폴더에는 ~20GB총 데이터가 포함되어 있습니다. 이 파일들을 하나의 최종 파일로 연결하는 방법은 무엇입니까?

중요한 경우 일반적으로 Zsh.

답변1

cat <->.csv > all.csv

이는 <->양의 정수 십진수와 일치하며 모든 숫자를 (어휘순으로, 동일한 숫자 순서로 0이 채워진 숫자로) 연결합니다 all.csv.

그러나 이렇게 하면 디스크 공간이 두 배로 늘어납니다. 원본 파일을 보관하지 않으려면 다음을 수행하세요.

for i in <->.csv; do
  cat $i && rm -f $i || break
done > all.csv

답변2

리디렉션을 사용하면 콘텐츠가 파일에 추가되거나 덮어쓰여집니다. 파일에 추가하려면 다음을 사용하십시오.

cat file.csv file2.csv file3.csv >> all.csv

다음 명령은 all.csv를 덮어씁니다.

cat file.csv file2.csv file3.csv > all.csv

그러나 모든 CSV 파일을 특정 디렉터리(추가)에 있는 하나의 CSV 파일로 이동한다고 가정해 보겠습니다.

cat *.csv >> all.csv

답변3

왜 이 모든 파일을 하나의 파일로 결합합니까?

  1. 표준 입력이 필요한 프로그램에 입력하려면 다음과 같이 하십시오.

    cat *.csv | prog
    

    또는 앞서 언급한 다른 조합 방법 중 하나를 사용합니다.

  2. 프로그램에 입력으로 명명된 파일이 필요한 경우 다음을 수행합니다.

    mkfifo p
    cat *.csv > p &
    prog p
    
  3. 백업이 더 쉽기 때문에 파일이 필요한 경우 모든 것을 함께 압축하는 것이 유용할 수 있습니다. 압축을 풀지 않고 파일을 읽으려면 tar 파일을 융합 기반 파일 시스템으로 변환하면 됩니다.

관련 정보