![Encontre todos os arquivos que contêm uma determinada cláusula em seus nomes](https://rvso.com/image/1127609/Encontre%20todos%20os%20arquivos%20que%20cont%C3%AAm%20uma%20determinada%20cl%C3%A1usula%20em%20seus%20nomes.png)
Esta é uma pergunta geral, mas meu caso é que instalei (acredito que tenha sido instalado!) O compilador braço gcc, mas não consigo encontrá-lo em nenhum lugar do meu sistema. Eu tentei o comando abaixo, mas ele retorna quase tudo
$sudo find . -print | grep -i '.*[arm]'
Acredito que o arquivo que procuro pode ter as seguintes cláusulas em seu nome:
gcc, arm, eabi, 4.8, ....
Qual seria o melhor termo de pesquisa?
Responder1
Você pode usar as opções -name
ou em vez da saída de ping ; você também pode restringir a pesquisa a arquivos e, se não tiver ideia de onde ele poderia ter sido instalado, é melhor pesquisar em vez de qualquer diretório de trabalho atual:-iname
find
grep
find
/
sudo find / -type f -name "*gcc*" -o -name "*arm*" -o -name "*eabi*" -o -name "*4.8*"
Conformeseu comentário, você o instalou usando um PPA, portanto, se o executável foi adicionado ao seu caminho, você poderá determinar sua localização executando which arm-none-eabi-gcc
; se não, execute sudo find / -type f -name "*arm-none-eabi-gcc*"
, ele deverá ser capaz de encontrá-lo.
Responder2
Instalei o pacote e executei: dpkg-query -L gcc-arm-none-eabi
. O resultado foi uma lista de arquivos, o mais relevante dos quais foi um número de arquivos começando /usr/bin/
com arm-none-eabi
. Acho que esses são os arquivos que você está procurando.
$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
Responder3
Esse find
comando deve funcionar:
find . -executable -type f -regex '.*\/[^\/]*\(gcc\|arm\|eabi\|4\.8\)[^\/]*'
Explicação:
-executable
: corresponde apenas a arquivos que possuem o bit executável definido.-type f
: corresponde apenas a arquivos regulares.-regex ...
: procure a expressão regular. Você deseja apenas nomes de base, não partes inteiras, então temos que excluir barras (/
) atrás de pelo menos uma barra.