Подтвердить что ты не робот

Рекурсивно найти файлы с определенным расширением

Я пытаюсь найти файлы с определенными расширениями. Например, я хочу найти все файлы .pdf и .jpg с именем Robert

Я знаю, что могу выполнить эту команду

$ find . -name '*.h' -o -name '*.cpp'

но мне нужно указать имя самого файла, кроме расширений. Я просто хочу посмотреть, есть ли возможный способ избежать записи имени файла снова и снова Спасибо!

4b9b3361

Ответ 1

Мои предпочтения:

find . -name '*.jpg' -o -name '*.png' -print | grep Robert

Ответ 2

Использование аргумента find -regex:

find . -regex '.*/Robert\.\(h\|cpp\)$'

Или просто используя -name:

find . -name 'Robert.*' -a \( -name '*.cpp' -o -name '*.h' \)

Ответ 4

find -name "*Robert*" \( -name "*.pdf" -o -name "*.jpg" \)

-o представляет условие OR, и вы можете добавить столько, сколько хотите в фигурных скобках. Таким образом, это говорит о том, чтобы найти все файлы, содержащие слово "Роберт", в любом месте их имен и имена которых заканчиваются либо "pdf", либо "jpg".

Ответ 5

В качестве альтернативы использованию опции -regex на find, так как вопрос помечен , вы можете использовать механизм расширения скобки:

eval find . -false "-o -name Robert".{jpg,pdf}

Ответ 6

Как script вы можете использовать:

find "${2:-.}" -iregex ".*${1:-Robert}\.\(h\|cpp\)$" -print
  • сохранить его как findcc
  • chmod 755 findcc

и использовать его как

findcc [name] [[search_direcory]]

например.

findcc                 # default name 'Robert' and directory .
findcc Joe             # default directory '.'
findcc Joe /somewhere  # no defaults

Заметьте, что вы не можете использовать

findcc /some/where    #eg without the name...

также можно использовать

find "$1" -print | grep "[email protected]" 

и

findcc directory grep_options

как

findcc . -P '/Robert\.(h|cpp)$'