¿Cómo puedo hacer que ls solo muestre archivos?

24

Supongo que tiene que haber una manera de hacer que ls solo muestre no directorios, pero la página del manual no lo hace obvio

piensainbinario
fuente
No está seguro acerca ls, pero se puede hacer fácilmente con el filecomando: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck
1
Otra forma sería filtrar la salida de lsthrough grep, algo así ls -1F /directory/containing/the/files | grep -vE /$. Pero tenga en cuenta que analizar la salida de ls puede ser complicado .
Henning Kockerbeck

Respuestas:

37
ls -p | grep -v /

Usando ls -ptell lspara agregar una barra diagonal a las entradas que son un directorio, y usando grep -v /tell greppara devolver solo líneas que no contienen una barra diagonal.

thomasrutter
fuente
Revisé éste porque es mi respuesta favorita (mientras que hice upvote todos ellos), pero ahora tratando de encontrar una manera de ponerlo en columnas y revertir el orden de salida de ...
thinksinbinary
"Puedes usar 1 interruptor para la lista de una sola columna" lo siento, intenté averiguar qué querías decir con eso, agradecería un ejemplo / explicación si lo
hicieras
@sdkks No necesita el 1interruptor al canalizar la salida, ya que por defecto será una sola columna en esa situación. Si eso es lo que querías decir.
thomasrutter
@thinksinbinary no está seguro de cómo hacer que sea de varias columnas, pero podría buscar o hacer su propia pregunta por separado y alguien lo sabrá.
thomasrutter
7

Puedes probar esto:

find . -maxdepth 1 -not -type d

Y asigne esto a un alias especial.

Pero si realmente está interesado en usar el lscomando, aquí:

ls -p | egrep -v /$

theabhinavdas
fuente
6

Alternativamente:

ls -lAh | grep -v '^d'

Este método se enumera en

  • -l Formato de lista larga
  • -A Muestra casi todos (muestra archivos ocultos pero no muestra .y ..)
  • -h Tamaños de archivo legibles por humanos

mientras grep

  • -v No mostrar registros coincidentes
  • Regular expressionfiltro ^d: los que comienzan con la letra d (para el directorio)drwxrwxr-x <some file details> <foldername>

Si no desea escribir todo el tiempo, puede convertirlo en un alias para su perfil bash / shell.

sdkks
fuente
2

Vi en su comentario (@thinksinbinary) sobre la respuesta de @thomasrutter, que deseaba poder imprimirlos en orden inverso y en columnas. Probablemente ya lo haya descubierto o haya avanzado, pero aquí está:

ls -pr | grep -v / | column
  • -p agrega la barra diagonal ('/') a los nombres de directorio
  • -r invierte el orden de salida
  • -v permite que grep realice una búsqueda inversa para imprimir todo excepto los directorios ( todo lo que no tiene el '/' que -p puso allí )
  • " columna lo pone en columnas" - Capitán Obvio
Levi Uzodike
fuente
1
creo que es genial que en el foro de ubuntu la gente todavía comente y lea tus publicaciones después de mucho tiempo. He estado esperando volver a Linux para aprender el ensamblaje y los sistemas operativos, ya que hacerlo en Windows es mucho más difícil. ¡Gracias!
thinkinbinary
0
ls -F | grep -v /

El comando anterior muestra archivos, pero incluye enlaces simbólicos, tuberías, etc. Si desea eliminarlos también, puede usar uno de los indicadores mencionados a continuación.

ls -Fagrega símbolos a los nombres de archivo. Estos símbolos muestran información útil sobre archivos.

ls -F | grep -Ev '/|@|*|=|>|\|'

El comando anterior muestra solo archivos.

BarathVutukuri
fuente