¿Hacer encontrar show slash después de los directorios?

19

¿Cómo puedo hacer que el comando find muestre una barra diagonal después de los directorios? Por ejemplo, quiero diraparecer como en dir/lugar de dir. Estoy usandofind . -print

Steven
fuente

Respuestas:

10

Portablemente:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

Si está dispuesto a enumerar directorios y archivos por separado (puede fusionar la salida ordenando):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

Con GNU find, vea la respuesta de Shawn J. Goff .

Si está dispuesto a arriesgarse a que los caracteres no imprimibles sean destrozados incluso cuando no se envían a un terminal, consulte la respuesta de ddeimeke .

En zsh: print -rl -- **/*(DM)( Dpara incluir archivos de puntos, Mpara agregar un /directorio posterior)

Gilles 'SO- deja de ser malvado'
fuente
El primer comando no imprimió barras diagonales finales para mí, pero el segundo sí.
Steven
15
find . \( -type d -printf "%p/\n" , -type f -print \)

Esto utiliza el comando printf para formatear nombres de directorio e impresión estándar para el resto.

Shawn J. Goff
fuente
Sigo asombrado por la flexibilidad de encontrar.
Shawn J. Goff
1
Tenga en cuenta que -printfes específico de GNU find.
Gilles 'SO- deja de ser malvado'
Buena respuesta. Me gusta cómo findlos argumentos posicionales le permiten obtener resultados avanzados como este. Sin embargo, tenga en cuenta que sin los espacios alrededor de la coma, no funcionará.
jimp
1
Basado en esta respuesta y la de Gilles, se me ocurrió la siguiente versión simplificada:find . -type d -printf '%p/\n' -or -print
Teresa e Junior
8

Tal vez

find . -print0 | xargs -0 ls -Fd

Es una opción también.

Desde una página de manual de Solaris:

-F Marca directorios con una barra inclinada final (/), puertas con un signo posterior mayor que (>), archivos ejecutables con un asterisco final (*), FIFOs con una barra vertical final (|), enlaces simbólicos con un final " en "sign (@), y AF_UNIX se dirigen a los sockets de familias con un signo trail igual a igual (=). Sigue enlaces simbólicos nombrados como operandos.

ddeimeke
fuente
@Gilles: Gracias por la "d" ;-)
ddeimeke
esto aumenta la cantidad de llamadas al sistema
Paweł Polewicz