¿Cómo puedo hacer que ls escupe una lista plana de rutas recursivas de uno por línea?
Por ejemplo, solo quiero una lista plana de archivos con sus rutas completas:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
casi hace lo que necesito, pero no quiero fragmentos de ruta, quiero rutas completas.
bash
command-line
find
ls
dreftymac
fuente
fuente
Respuestas:
Si realmente quieres usar
ls
, formatea su salida usando awk:fuente
awk
expresiones anteriores ?Use find:
Si solo desea archivos (omita directorios, dispositivos, etc.):
fuente
ls
parámetros como--sort=extension
"redimidos" por esta solución?ls -ld $(find .)
si desea ordenar su salida por tiempo de modificación:
ls -ltd $(find .)
fuente
--sort=extension
parámetro dels
find . -name "*" -exec ls -ld '{}' \;
(esa funciona independientemente de la cantidad de archivos), pero su comando es mucho más corto de escribir;)find . -ls
.Pruebe la siguiente manera más simple:
fuente
find "`pwd`"
si la ruta contiene espacios u otros caracteres especiales.find .
? -.-pwd
para comenzar, imprimirá rutas absolutas. Por cierto, "¿Cómo es esto diferente afind
" ;-)El mejor comando es:
tree -fi
Para usar los archivos pero no los enlaces, debe eliminarlos
>
de su salida:Si desea conocer la naturaleza de cada archivo (para leer solo archivos ASCII, por ejemplo) con dos
while
s:fuente
tree
!brew install tree
, dado que está utilizando homebrewOh, realmente una larga lista de respuestas. Ayudó mucho y finalmente, creé el mío que estaba buscando:
Para enumerar todos los archivos en un directorio y sus subdirectorios:
Para enumerar todos los directorios en un directorio y sus subdirectorios:
Para enumerar todos los directorios y archivos en un directorio y sus subdirectorios:
fuente
find "$PWD" -type f | grep '\.json$'
No sé sobre el camino completo, pero puedes usarlo
-R
para la recursividad. Alternativamente, si no estás empeñadols
, puedes hacerlofind *
.fuente
Sin usar comandos externos que no sean ls:
fuente
Práctico para algunas carcasas de electrodomésticos limitados donde buscar / ubicar no están disponibles
fuente
awk
?encontrar / hará el truco
fuente
No lo hagas complicado. Acabo de usar esto y obtuve una salida hermosa:
fuente
ls -lR
No cumpliría ese objetivo.La forma más fácil para todas las personas futuras es simplemente:
Sin embargo, esto también muestra el tamaño de lo que contiene cada carpeta. Puede usar awk para generar solo el nombre de la carpeta:
Editar- Lo siento, lo siento, mi mal. Pensé que solo se necesitaban carpetas. Dejaré esto aquí en caso de que alguien en el futuro lo necesite de todos modos ...
fuente
Con la libertad de usar todas las opciones posibles de ls:
find -type f | xargs ls -1
fuente
Creo que para una lista plana la mejor manera es:
(o para guardarlo en un archivo txt)
fuente
find: illegal option -- D
Ejecute un comando bash con el siguiente formato:
fuente
Aquí hay una respuesta parcial que muestra los nombres de directorio.
Explicación:
ls -mR *
enumera los nombres de directorio completos que terminan en ':', luego enumera los archivos en ese directorio por separadosed -n 's/://p'
encuentra líneas que terminan en dos puntos, quita los dos puntos e imprime la líneaAl iterar sobre la lista de directorios, también deberíamos poder encontrar los directorios. Todavía estoy trabajando en eso. Es un desafío obtener los comodines a través de xargs.
fuente
Agregar un comodín al final de un directorio ls fuerza las rutas completas. En este momento tienes esto:
Podrías hacer esto en su lugar:
Desafortunadamente, esto no imprime la ruta completa para los directorios que se repiten, por lo que puede no ser la solución completa que está buscando.
fuente
Muchas respuestas veo. Esto es mío, y creo que es bastante útil si estás trabajando en Mac.
Estoy seguro de que sabe que hay algunos archivos de "paquete" ( .app , .rtfd , .workflow , etc.). Y mirando la ventana del Finder parecen archivos individuales. Pero no lo son. Y
$ ls
o$ find
verlos como directorios ... Entonces, a menos que necesite enumerar también su contenido, esto funciona para mí:Por supuesto, esto es para el directorio de trabajo, y puede agregar extensiones de otros paquetes (pero siempre con un
/
después de ellos). O cualquier otra extensión si no es paquete sin el/
.Más bien interesante el "
.lpdf/
" (pdf multilingüe). Tiene una.pdf
extensión " " normal (!!) o ninguna en Finder. De esta manera obtienes (o solo cuenta 1 archivo) para estopdf
y no un montón de cosas ...fuente
ls -lR
es lo que estabas buscando, o al menos yo era. saludfuente
ls -lR
No cumpliría ese objetivo.Si el directorio se pasa como una ruta relativa y deberá convertirlo en una ruta absoluta antes de llamar a find. En el siguiente ejemplo, el directorio se pasa como primer parámetro al script:
fuente
readlink
, puede hacerlodirectory=$(readlink -e $1)
readlink
en OS X 10.5.8 no es compatible con la opción -e.Esto es lento pero funciona de forma recursiva e imprime directorios y archivos. Puede canalizarlo con awk / grep si solo desea los nombres de archivo sin el resto de información / directorios:
fuente
@ ghostdog74: pequeño retoque con tu solución.
El siguiente código se puede utilizar para buscar archivos con su ruta absoluta completa.
fuente
Conocía el nombre del archivo, pero también quería el directorio.
encontrar $ PWD | nombre de archivo fgrep
funcionó perfectamente en Mac OS 10.12.1
fuente