$ find . -type f -name '*.cpp' ! -path '*-old*'
Eu tenho uma árvore de origem com alguns diretórios com nomes que terminam com -old , que são mantidos como uma referência ao reescrever os componentes que estão neles. Há também um Makefile que apenas find s todos *.cpp arquivos em subpastas do diretório atual e compila-os em um único executável (sim, eu sei, não é um ótimo sistema de compilação, mas funciona muito bem .. exceto o -old s).
Então, estou usando isso para obter uma lista de todos os arquivos *.cpp :
SOURCES=$(shell find . -name "*.cpp" -print)
Como posso dizer a find para procurar todos os arquivos *.cpp , que não têm *-old* em seu caminho?
find . -type d -name "*-old" -prune -o -name "*.cpp" -print