Sua abordagem find . -type f -name '*~' -exec rm -f '{}' \; tem alguns problemas / escopos de melhoria:
-
-name '*~'corresponde apenas aos arquivos que terminam em~; se você quiser corresponder qualquer arquivo contendo~, use*~* -
-exec rm -f '{}' \;está gerandormpara cada arquivo, que é desajeitado e ineficiente; em vez disso, comormpode receber vários arquivos como argumentos, você pode informarfind ... -execpara obter tantos arquivos de uma só vez sem acionarARG_MAXusando o argumento+para-exec
Colocando esses dois juntos:
find . -type f -name '*~*' -exec rm -f {} +
Se acontecer de você ter o GNU find , você pode usar a ação -delete :
find . -type f -name '*~*' -delete
Em zsh , você pode fazer correspondência de padrão recursivo e remoção de uma só vez como:
rm -f -- **/*~*(.)
o modificador% glob. corresponde apenas a arquivos regulares.