Cómo obtener una lista de nombres de archivos en diferentes líneas

116

Quiero obtener una lista de todos los archivos en un directorio, como con ls, para que cada nombre de archivo esté en una línea separada, sin los detalles adicionales proporcionados por ls -l. Miré ls --helpy no encontré una solución. Intenté hacer

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

pero lsno usa un número fijo de espacios entre columnas. ¿Alguna idea de cómo hacer esto, preferiblemente en una línea?

Amir Rachum
fuente

Respuestas:

259

ls -1

Ese es un número, no pequeño L.

Šimon Tóth
fuente
5
Veo esto en la documentación: cross -x, comas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C No estoy seguro de cómo se les ocurrieron algunos de estos.
Alexander Taylor
23

ls -1. De la ayuda:

-1 lista un archivo por línea

Funciona en cygwin y FreeBSD, por lo que probablemente no sea demasiado específico de GNU.

jhwist
fuente
También funciona en Ubuntu. Gracias
Yonatan Simson
12

solución sin tubería :-)

 ls --format single-column

Tenga en cuenta que las opciones largas solo son compatibles con las coreutils de GNU donde BSD ls solo admite los argumentos cortos-1

rene
fuente
6

Quizás:

ls | awk '{print $NF}'
Eelvex
fuente
nota: un nombre de archivo con espacios como "manzanas y peras.jpg" se convertirá en "peras.jpg"
oknate
4

ls | cat ... o posiblemente, ls -1

Johan Kotlinski
fuente
4
Por favor, evite el uso inútil de cat :)
jhwist
3
catno es inútil en este caso. Formatea la salida de lsen una columna como OP lo solicita.
Felix Eve
3

Use el comando sed para listar columnas individuales

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
vara
fuente
ls -lproduce el mismo resultado que toda su respuesta. No estoy seguro de lo que sedestá agregando aquí ...
Felix Eve
3

Prueba esto:

$ ls | xargs -n num

Aquí numestá la cantidad de columnas que desea incluir.

Honeytechiebee
fuente
1

primero puedes usar esto. mostrará un archivo por línea.

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

o de lo contrario puedes usar así

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

ambas cosas son iguales.

Manikandan Rajendran
fuente
Recibo el errorsed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve
0

Esto también servirá

ls -l | awk '{print $NF}'
Vicky
fuente
1
¿Cómo es esto prácticamente diferente de la respuesta de Eelvex ?
Todos los trabajadores son esenciales
0

Esto también funciona: echo -e "\ n $ (ls)"

Anshul Ayushya
fuente