Найти все файлы, содержащие заданное предложение в своих именах

Найти все файлы, содержащие заданное предложение в своих именах

Это общий вопрос, но мой случай таков, что я установил (я верю, что он был установлен!) компилятор gcc arm, но я не могу найти его нигде в моей системе. Я попробовал команду ниже, но она возвращает почти все

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

Я полагаю, что файл, который я ищу, может иметь в своем названии следующие пункты:

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

Какой поисковый запрос будет лучшим?

решение1

Вы можете использовать ключи или -nameвместо вывода ping ; также вы можете сузить поиск до файлов, и если вы не знаете, где он мог быть установлен, вам лучше поискать в , а не в том, который является вашим текущим рабочим каталогом:-inamefindgrepfind/

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

Согласноваш комментарий, вы установили его с помощью PPA, поэтому, если исполняемый файл был добавлен в ваш путь, вы сможете определить его местоположение, запустив which arm-none-eabi-gcc; если нет, запустите sudo find / -type f -name "*arm-none-eabi-gcc*", он должен быть в состоянии найти его.

решение2

Я установил пакет и запустил: dpkg-query -L gcc-arm-none-eabi. Результатом стал список файлов, наиболее релевантными из которых были файлы, начинающиеся /usr/bin/с arm-none-eabi. Я думаю, это те файлы, которые вы ищете.

    $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

решение3

Эта findкоманда должна сработать:

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

Объяснение:

  • -executable: соответствует только тем файлам, у которых установлен исполняемый бит.
  • -type f: соответствовать только обычным файлам.
  • -regex ...: поиск регулярного выражения. Вам нужны только базовые имена, а не целые части, поэтому нам нужно исключить слеши ( /) как минимум за одним слешем.

Связанный контент