Como obter uma lista de nomes de arquivos em linhas diferentes

116

Quero obter uma lista de todos os arquivos em um diretório, como com ls, para que cada nome de arquivo fique em uma linha separada, sem os detalhes extras fornecidos por ls -l. Eu olhei ls --helpe não encontrei uma solução. Eu tentei fazer

ls -l | cut --fields=9 -d" "

mas lsnão usa um número fixo de espaços entre as colunas. Alguma ideia de como fazer isso, de preferência em uma linha?

Amir Rachum
fonte

Respostas:

259

ls -1

Esse é um número, não pequeno L.

Šimon Tóth
fonte
5
vejo isso na documentação: cross -x, vírgulas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C Não sei como eles surgiram com alguns deles.
Alexander Taylor
23

ls -1. Da ajuda:

-1 lista um arquivo por linha

Funciona em cygwin e FreeBSD, então provavelmente não é muito específico do GNU.

jhwist
fonte
Funciona no Ubuntu também. Obrigado
Yonatan Simson
12

solução sem tubulação :-)

 ls --format single-column

Note que as opções longas só são suportadas no GNU coreutils onde BSD ls só suporta os argumentos curtos-1

René
fonte
6

Possivelmente:

ls | awk '{print $NF}'
Eelvex
fonte
observação: um nome de arquivo com espaços como "maçãs e pêras.jpg" se transformará em "pêras.jpg"
oknate,
4

ls | cat ... ou possivelmente, ls -1

Johan Kotlinski
fonte
4
Por favor, evite o uso inútil de cat :)
jhwist
3
catnão é inútil neste caso. Ele formata a saída de lsem uma coluna como OP pede.
Felix Eve
3

Use o comando sed para listar colunas únicas

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
vara
fonte
ls -lproduz a mesma saída de sua resposta inteira. Não tenho certeza do que sedestá adicionando aqui ...
Felix Eve
3

Experimente isto:

$ ls | xargs -n num

Aqui numestá o número de colunas que você deseja listar.

Honeytechiebee
fonte
1

primeiro você pode usar isso. ele exibirá um arquivo por linha.

ls -l | sed 's /(.*) (. *) $ / \ 2 /'

ou então você pode usar assim

encontrar . -maxdepth 1 | sed 's /.///'

ambas as coisas são iguais.

Manikandan Rajendran
fonte
Recebo o errosed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve
0

Isso também fará

ls -l | awk '{print $NF}'
Vicky
fonte
1
Como isso é praticamente diferente da resposta de Eelvex ?
Todos os trabalhadores são essenciais
0

Isso também está funcionando: echo -e "\ n $ (ls)"

Anshul Ayushya
fonte