Eu tenho um diretório na pasta do terminal. Estou usando o MobaXterm. Este diretório contém um grande número de arquivos. Os nomes dos arquivos são longos e possuem alguns caracteres ilegais. Um exemplo de nome de arquivo é "Os três co-presidentes (Indonésia, Libéria, Reino Unido) do Painel de Alto Nível do Secretário-Geral sobre a Agenda de Desenvolvimento Pós-2015 - Media Stakeout-1861343067001.m4a" . Eu escrevo os nomes dos arquivos em um arquivo csv usando a seguinte linha de comando e estava funcionando até agora.
dir$ find . -type f > names.csv
Mas desta vez, em vez de uma coluna, o nome do arquivo é dividido em várias colunas.
Quero o nome completo apenas na coluna A. Quero escrever os nomes dos arquivos originais, incluindo as vírgulas. O mesmo comando foi capaz de escrever os nomes dos arquivos com as vírgulas para meus conjuntos de dados anteriores, a única diferença que esses nomes de arquivos eram mais curtos que este.
Como pode corrigi-lo?
No Linux, o GNU find tem uma
-printf
opção que imprimirá o nome do arquivo com um determinado formato; para importar para CSV, você pode colocar o nome do arquivo entre aspas duplas, algo como:CSV significa valor separado por vírgula . Quando a planilha lê o arquivo, ela interpreta as vírgulas como divisores de campo. Substitua as vírgulas por algum outro separador, como um sublinhado, por tr , assim
Ao importá-los, o Campo Um não será dividido.
O comprimento do nome do arquivo não tem efeito aqui, mas o separador padrão do mecanismo de importação. Escolha um caractere nunca usado em seus nomes de arquivo e use-o como separador CVS. Vamos supor que esta escolha seja § (sinal de seção) Seu
find
comando seria:ou se você deseja obter o nome do arquivo sem seu ponto de partida:
Agora, ao importar seu csv, especifique § como separador
Existem diferentes sabores de CSV, mas uma solução compatível com RFC 4180 usando sed:
Isso substituirá instâncias de
"
with""
e encapsulará linhas não vazias com aspas duplas.