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 tr
para esse trabalho.
ls -p | grep -v / | tr '\n' ','
Responder2
Você pode usar o ls -m
comando 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.