Encontre todos os arquivos que contêm uma determinada cláusula em seus nomes

Encontre todos os arquivos que contêm uma determinada cláusula em seus nomes

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 -nameou 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:-inamefindgrepfind/

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 findcomando 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.

informação relacionada