Encuentra nombres de archivos ejecutables sin ruta


9

Tengo una carpeta con muchos ejecutables y quiero omitir la ruta en los resultados del comando find. Este comando muestra los archivos que quiero ver, pero también enumera la ruta; Solo quiero el nombre del archivo.

find /opt/g09 -maxdepth 1 -executable

¿Cómo puedo obtener la salida de find para mostrar solo los nombres de archivo y no la ruta completa?

Respuestas:


10

O usar:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

agregar la -type fbandera también funciona aquí.

Del findmanual:

 %f     File's name with any leading directories removed (only the last element).

Esta respuesta solo requiere que tenga GNU, findmientras que otros requieren otros programas para manipular sus resultados.


-tipo f ¡Eso es lo que estaba tratando de pensar! Gracias coding man!
j0h

@ j0h no es un problema!
nixpower 01 de

6

Uso basename:

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

De man basename:

Print NAME with any leading directory components removed.

También está intentando findtodo, para restringir su búsqueda a solo archivos, use:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;

3

La solución más obvia para mí es

(cd /opt/g09; find -maxdepth 1 -executable)

Como inicia una subshell, permanece en el mismo directorio. La ventaja de este método es que no necesita análisis. La desventaja es que comienzas un subshell (aunque no lo sentirás).


1
Es una idea inteligente.
AB

1

Con awk, dividiendo la ruta por el delimitador /, imprima la última sección ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'

¿Dónde está tu versión de Python hermano? ;)
Sergiy Kolodyazhnyy

@Serg jaja, tuve que atarme los dedos :)
Jacob Vlijm

1

Usando una combinación de findyperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

Gran manera de aprender algo de Perl: P
nixpower
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.