
터미널 폴더에 디렉토리가 있습니다. 저는 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
답변3
CSV에는 다양한 종류가 있지만 sed를 사용하는 RFC 4180 호환 솔루션은 다음과 같습니다.
find . -type f | sed 's/"/""/g;s/\(.\+\)/"\1"/'
"
이는 with 인스턴스를 대체 ""
하고 비어 있지 않은 줄을 큰따옴표로 묶습니다.