2011-03-01 3 views
93

Quiero obtener una lista de todos los archivos en un directorio, como con ls, de modo que cada nombre de archivo esté en una línea separada, sin los detalles adicionales suministrados por ls -l . Miré ls --help y no encontré una solución. He intentado hacerCómo obtener una lista de nombres de archivos en diferentes líneas

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

pero ls no utiliza un número fijo de espacios entre las columnas. ¿Alguna idea sobre cómo hacer esto, preferiblemente en una línea?

Respuesta

213

ls -1

Eso es un número, no pequeña L.

+4

Veo esto en la documentación: cross -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C No estoy seguro de cómo salieron con algunos de estos. –

5

Tal vez:

ls | awk '{print $NF}' 
+0

nota también lo hará:. Un nombre de archivo con espacios como " apples and pears.jpg "se convertirá en" pears.jpg " – oknate

4

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

+3

Por favor evite el uso inútil del gato :) – jhwist

+3

' cat' no es inútil en este caso. Formatea la salida de 'ls' en una columna cuando OP lo solicita. –

11

solución sin tubo-ción :-)

ls --format single-column 

Tenga en cuenta que las opciones largas sólo se admiten en el GNU coreutils donde BSD ls sólo es compatible con los argumentos cortos -1

19

ls -1. De la ayuda:

-1 lista de un archivo por línea

Obras en cygwin y FreeBSD, así que no es probable que sea demasiado específicas de GNU.

+0

'man 1p ls' es la documentación de posix –

+0

También funciona en Ubuntu. Gracias –

3

usar sed comando para listar las columnas individuales

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/' 
+0

'ls -l' produce el mismo resultado que toda la respuesta. No estoy seguro de qué 'sed' está agregando aquí ... –

1

primera se puede utilizar este. mostrará un archivo por línea.

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

o de lo contrario se puede utilizar tanto

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

ambas cosas son iguales.

+0

Me sale el error' sed: -e expresión # 1, char 16: referencia no válida \ 2 en \ 's 'comando RHS' –

3

Prueba esto:

$ ls | xargs -n num 

Aquí num es el número de columnas que desea tener en

0

Este

ls -l | awk '{print $NF}' 
+0

¿Cómo es esto prácticamente diferente de Eelvex [respuesta] (http://stackoverflow.com/a/5155730/369450)? – cpburnz

Cuestiones relacionadas