Quero excluir todos os arquivos que têm um arquivo C
correspondente . Todos os arquivos de montagem têm no final. Os arquivos têm nomes idênticos, mas com em vez de no final. Como eu faria algo como:asm
_x86_64.S
C
.c
_x86_64.S
find . -not -name *{_x86_64.S but replace with .c}
Então, por exemplo, se my_func.c
e my_func_x86_64.S
existirem, o arquivo my_func.c
será excluído pelo comando acima.
Editar: A resposta fornecida abaixo funciona. Esqueci de mencionar que estava usando isso em um Makefile. O que eu estava fazendo era o seguinte:
ASM_FILES = $(shell find ./src/assembly/x86_64/ -name "*.S" -printf "-not -name \"*%f*\" -and ")
ASM_INCLUDE += -wholename "./src/assembly/x86_64/*.S" -or
EXCLUDE += $(subst _x86_64.S,.c,$(ASM_FILES))
Isso funciona, mas eu esperava algo um pouco mais limpo.