Encuentre todos los archivos que contengan una cláusula determinada en sus nombres

Encuentre todos los archivos que contengan una cláusula determinada en sus nombres

Esta es una pregunta general, pero mi caso es que instalé (¡creo que se instaló!) el compilador gcc arm pero no puedo encontrarlo en ninguna parte de mi sistema. Probé el siguiente comando pero devuelve casi cualquier cosa.

$sudo find . -print | grep -i '.*[arm]'

Creo que el archivo que estoy buscando puede tener las siguientes cláusulas en su nombre:

gcc, arm, eabi, 4.8, ....

¿Cuál sería el mejor término de búsqueda?

Respuesta1

Puede utilizar los interruptores -nameo de en lugar de la salida de ping ; También puede limitar la búsqueda a archivos, y si no tiene idea de dónde podría haberse instalado, será mejor que busque en el directorio de trabajo actual en lugar de en el que esté:-inamefindgrepfind/

sudo find / -type f -name "*gcc*" -o -name "*arm*" -o -name "*eabi*" -o -name "*4.8*"

segúntu comentario, lo instaló usando un PPA, por lo que si el ejecutable se agregó a su ruta, debería poder determinar su ubicación ejecutando which arm-none-eabi-gcc; si no es así, ejecute sudo find / -type f -name "*arm-none-eabi-gcc*", debería poder encontrarlo.

Respuesta2

Instalé el paquete y ejecuté: dpkg-query -L gcc-arm-none-eabi. El resultado fue una lista de archivos, el más relevante de los cuales era un número /usr/bin/total de archivos que comenzaban con arm-none-eabi. Creo que esos son los archivos que estás buscando.

    $ls /usr/bin/arm-none-eabi*
/usr/bin/arm-none-eabi-addr2line   /usr/bin/arm-none-eabi-gcov
/usr/bin/arm-none-eabi-ar          /usr/bin/arm-none-eabi-gdb
/usr/bin/arm-none-eabi-as          /usr/bin/arm-none-eabi-gprof
/usr/bin/arm-none-eabi-c++         /usr/bin/arm-none-eabi-ld
/usr/bin/arm-none-eabi-c++filt     /usr/bin/arm-none-eabi-ld.bfd
/usr/bin/arm-none-eabi-cpp         /usr/bin/arm-none-eabi-nm
/usr/bin/arm-none-eabi-elfedit     /usr/bin/arm-none-eabi-objcopy
/usr/bin/arm-none-eabi-g++         /usr/bin/arm-none-eabi-objdump
/usr/bin/arm-none-eabi-gcc         /usr/bin/arm-none-eabi-ranlib
/usr/bin/arm-none-eabi-gcc-4.9.3   /usr/bin/arm-none-eabi-readelf
/usr/bin/arm-none-eabi-gcc-ar      /usr/bin/arm-none-eabi-size
/usr/bin/arm-none-eabi-gcc-nm      /usr/bin/arm-none-eabi-strings
/usr/bin/arm-none-eabi-gcc-ranlib  /usr/bin/arm-none-eabi-strip

Respuesta3

Ese findcomando debería funcionar:

find . -executable -type f -regex '.*\/[^\/]*\(gcc\|arm\|eabi\|4\.8\)[^\/]*'

Explicación:

  • -executable: solo coincide con archivos que tienen el bit ejecutable configurado.
  • -type f: solo coincide con archivos normales.
  • -regex ...: busca la expresión regular. Solo desea nombres base, no partes enteras, por lo que tenemos que excluir las barras ( /) detrás de al menos una barra.

información relacionada