csv 파일에 쓸 때 파일명이 나누어집니다.

csv 파일에 쓸 때 파일명이 나누어집니다.

터미널 폴더에 디렉토리가 있습니다. MobaXterm을 사용하고 있습니다. 이 디렉토리에는 많은 수의 파일이 있습니다. 파일 이름이 길고 잘못된 문자가 일부 포함되어 있습니다. 예시 파일 이름은 다음과 같습니다."2015년 이후 개발 의제에 관한 사무총장 고위급 패널 공동의장 3인(인도네시아, 라이베리아, 영국) - Media Stakeout-1861343067001.m4a". 다음 명령줄을 사용하여 csv 파일에 파일 이름을 작성했는데 지금까지 작동했습니다.

dir$ find . -type f  > names.csv

하지만 이번에는 하나의 열이 아닌 여러 개의 열로 파일 이름을 나눕니다.

여기에 이미지 설명을 입력하세요

A 열에만 전체 이름을 쓰고 싶습니다. 쉼표를 포함하여 원본 파일 이름을 쓰고 싶습니다. 동일한 명령으로 이전 데이터 세트에 대해 쉼표를 사용하여 파일 이름을 작성할 수 있었지만 해당 파일 이름이 이 파일 이름보다 짧다는 차이점만 있습니다.

어떻게 고칠 수 있나요?

답변1

Linux에서 GNU find에는 -printf지정된 형식으로 파일 이름을 인쇄하는 옵션이 있습니다. CSV로 가져오려면 다음과 같이 파일 이름을 큰따옴표로 묶을 수 있습니다.

find . -type f -printf '"%p"\n'

답변2

CSV는 다음을 의미합니다.쉼표로 구분된 값. 스프레드시트는 파일을 읽을 때 쉼표를 필드 구분자로 해석합니다. 쉼표를 밑줄과 같은 다른 구분 기호로 바꾸십시오.tr, 따라서

$ tr ',' '-_' < input.csv | tr -d '"' 

가져올 때 Field One은 분할되지 않습니다.

답변3

CSV에는 다양한 종류가 있지만 sed를 사용하는 RFC 4180 호환 솔루션은 다음과 같습니다.

find . -type f | sed 's/"/""/g;s/\(.\+\)/"\1"/'

"이는 with 인스턴스를 대체 ""하고 비어 있지 않은 줄을 큰따옴표로 캡슐화합니다.

답변4

파일 이름 길이는 여기에 영향을 미치지 않지만 가져오기 엔진의 기본 구분 기호입니다. 파일 이름에 사용되지 않은 문자를 선택하여 CVS 구분 기호로 사용하세요. 이 선택이 §(섹션 기호)이라고 가정해 보겠습니다 find. 명령은 다음과 같습니다.

find . -type f -printf '§%p§\n' > names.csv

또는 시작점 없이 파일 이름을 얻으려는 경우:

find . -type f -printf '§%P§\n' > names.csv

이제 csv를 가져오는 동안 §를 구분 기호로 지정하세요. 여기에 이미지 설명을 입력하세요

관련 정보