У меня есть исходное дерево, имеющее несколько каталогов с именами, заканчивающимися на -old , которые сохраняются в качестве справочной информации при перезаписи компонентов, которые в них находятся. Есть также Makefile который просто find все *.cpp файлы в подпапках текущего каталога и компилирует их в один исполняемый файл (да, я знаю, это не какая-то отличная система сборки, но она работает довольно хорошо ... кроме -old с).

Итак, я использую это, чтобы получить список всех файлов *.cpp :

SOURCES=$(shell find . -name "*.cpp" -print)

Как я могу сказать, что find ищет все файлы *.cpp , которые не имеют *-old* в своем пути?

2 ответа2

1

$ find . -type f -name '*.cpp' ! -path '*-old*'
1
find . -type d -name "*-old" -prune -o -name "*.cpp" -print

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .