y eso todavía te deja con el prefijo './' para cada nombre de archivo. Eso no es realmente un problema, pero creo que es un poco feo. Yo fui con:
ls -p | grep -v '/$'
Y eso le dará una lista que se ve igual, y también puede agregar lsargumentos adicionales . Agregue un --color=alwaysy obtendrá sus colores de dir, o -apara ver archivos ocultos.
Me gusta la respuesta de Alexander porque en realidad depende de un sistema de archivos característico del archivo en cuestión para que nunca se deje engañar. Mi respuesta será engañada por un archivo que tiene un '/' como último carácter en su nombre. Pero eso parece que está pidiendo problemas.
'-no' está relacionado con GNU find, ya que no es compatible con POSIX, es mejor no enseñar estas opciones ya que un usuario podría tener hábitos "malos" y sentirse perdido en otros UNIX :)
jirib
2
@JiriXichtkniha, ¿cuál es la alternativa POSIX a -not?
Esta respuesta ya fue proporcionada hace más de un año por jamzed, (haciendo este ruido visual.)
Alexx Roche
2
Las soluciones "encontrar" anteriores pierden algunas de las capacidades de ls , por ejemplo: enumerar solo archivos, ordenados en tiempo de modificación descendente.
Las respuestas "ls -p | grep" no tratan con elegancia otros elementos de ls como -R si se desean
La siguiente respuesta, mientras que más detallado, en mi opinión refleja la verdadera ls comportamiento y mayor flexibilidad para seleccionar "sólo los archivos"
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Simplemente reemplace los interruptores ls como desee y el resultado se devolverá solo con archivos. Si también se requieren enlaces y otros elementos, entonces será necesario realizar una revisión menor para la prueba para su inclusión.
Con esto, aún puede usar cualquier otra opción que lsgeneralmente tome. O ... eliminar -vpara enumerar solo directorios. O ... reemplace el directorio con cualquier otro tipo de archivo que filecomprenda e informe, como ASCII, vacío, ELF, etc.
Esto no funciona si alguno de los nombres de archivo que se enumerarán contienen espacios.
Psiconauta el
ls -t .|while read f;do [ -f "$f" ]&& echo $f;donees aproximadamente 3 veces más rápido en mis pruebas
Alexx Roche
0
Estaba en un sistema donde el findbinario no era compatible -noty terminé usando:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Ventajas: no se basa en otra cosa que no sea sh ls echo
compatible con bash y dash
Se puede cambiar para que coincida con otras cosas (como directorios) al cambiar -f
Es más rápido que algunas de las respuestas y usa menos RAM y CPU
ls .
sin directorios, y aquí está.-ls
o-exec ls -l {} \;
lo haríals -l
sin directorios.Para obtenerlo exactamente equivalente a
ls .
usted, no debe mostrar directorios ocultos.find . -maxdepth 1 -not -type d -and -not -name '.*'
y eso todavía te deja con el prefijo './' para cada nombre de archivo. Eso no es realmente un problema, pero creo que es un poco feo. Yo fui con:
ls -p | grep -v '/$'
Y eso le dará una lista que se ve igual, y también puede agregar
ls
argumentos adicionales . Agregue un--color=always
y obtendrá sus colores de dir, o-a
para ver archivos ocultos.Me gusta la respuesta de Alexander porque en realidad depende de un sistema de archivos característico del archivo en cuestión para que nunca se deje engañar. Mi respuesta será engañada por un archivo que tiene un '/' como último carácter en su nombre. Pero eso parece que está pidiendo problemas.
fuente
prueba esto:
o esto:
fuente
Aunque es una publicación antigua, pensé que esto podría ayudar ...
$ ls -l | grep -v ^ d
Enumerará todos los archivos, incluidos enlaces simbólicos, caracteres y archivos de bloque.
fuente
Las soluciones "encontrar" anteriores pierden algunas de las capacidades de ls , por ejemplo: enumerar solo archivos, ordenados en tiempo de modificación descendente.
Las respuestas "ls -p | grep" no tratan con elegancia otros elementos de ls como -R si se desean
La siguiente respuesta, mientras que más detallado, en mi opinión refleja la verdadera ls comportamiento y mayor flexibilidad para seleccionar "sólo los archivos"
Simplemente reemplace los interruptores ls como desee y el resultado se devolverá solo con archivos. Si también se requieren enlaces y otros elementos, entonces será necesario realizar una revisión menor para la prueba para su inclusión.
fuente
Con esto, aún puede usar cualquier otra opción que
ls
generalmente tome. O ... eliminar-v
para enumerar solo directorios. O ... reemplace el directorio con cualquier otro tipo de archivo quefile
comprenda e informe, como ASCII, vacío, ELF, etc.fuente
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
es aproximadamente 3 veces más rápido en mis pruebasEstaba en un sistema donde el
find
binario no era compatible-not
y terminé usando:Ventajas: no se basa en otra cosa que no sea
sh ls echo
compatible con bash y dash
Se puede cambiar para que coincida con otras cosas (como directorios) al cambiar
-f
Es más rápido que algunas de las respuestas y usa menos RAM y CPU
fuente