Como listar apenas arquivos em um diretório separados por vírgulas

Como listar apenas arquivos em um diretório separados por vírgulas

Portanto, não há diretórios nem arquivos ocultos. Apenas os arquivos. Listar apenas arquivos pode ser feito com a linha a seguir.

ls -p | grep -v /

Agora quero que o resultado desta linha seja separado por vírgulas.

Responder1

Você pode usar trpara esse trabalho.

ls -p | grep -v / | tr '\n' ','

Responder2

Você pode usar o ls -mcomando GNU. Ele imprimirá todos os arquivos e diretórios separados por vírgula.

Responder3

A solução proposta por Thomas funciona, mas adiciona uma vírgula ao último item (que pode não ser o que você deseja) e exclui os espaços após as vírgulas. A alternativa a seguir preserva os espaços após as vírgulas e não adiciona vírgula após o último item:

 ls -1p | grep -v / | xargs echo | sed 's/ /, /g'

Claro, se você quiser se livrar dos espaços entre os itens, basta ajustar a expressão sed:

 ls -1p | grep -v / | xargs echo | sed 's/ /,/g'

(Observação para os visualizadores que usam uma fonte em que um 'l' minúsculo e o número '1' (um) parecem iguais: a primeira opção passada para lsé 1, o número, e não minúsculo l.)

Como Jim L apontou em um comentário, os comandos acima funcionam apenas para nomes de arquivos que não contêm espaços. Os seguintes comandos contornam isso:

 ls -1p | grep -v / | sed 's/$/, /g' | xargs echo | sed 's/,$//g' 

Isto substitui os finais de linha por uma vírgula antes de passar a lista para echo; a última parte elimina o comando no final da lista.

informação relacionada