![Encuentre todos los archivos que contengan una cláusula determinada en sus nombres](https://rvso.com/image/1127609/Encuentre%20todos%20los%20archivos%20que%20contengan%20una%20cl%C3%A1usula%20determinada%20en%20sus%20nombres.png)
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 -name
o 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é:-iname
find
grep
find
/
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 find
comando 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.