Seu bash alias não está bem escrito (as aspas simples não são bem usadas). Em vez disso, deve ser:
alias rm~='find . -name "*~" -print0 | xargs -0 /bin/rm -f'
Agora, eu pessoalmente não gosto de usos inúteis de pipes e xargs , então seu alias seria melhor escrito como:
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
A opção -type f para encontrar apenas arquivos (não diretórios, links, etc.), a opção -v para rm para ser detalhada (imprime o que está excluindo). O + no final, para que find execute rm com todos os arquivos encontrados (gera apenas uma instância de rm , em vez de um por arquivo).
Agora de man bash :
Para quase todos os propósitos, os aliases são substituídos pelas funções do shell.
Em vez de um alias, é melhor usar uma função: comentar seu alias no arquivo .bash_aliases (ou seja, colocar um # na frente dessa linha) e, no arquivo .bashrc , colocar isso < em> function (em qualquer lugar no arquivo, no final é bom):
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
Além disso, como a outra resposta menciona, você pode usar o comando -delete para localizar. Nesse caso, sua função rm~ será:
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
Na verdade, você pode criar uma função legal que levará um argumento, digamos, --dry-run , que só exibirá o que será excluído:
rm~() {
case "" in
"--dry-run")
find . -name "*~" -type f -printf "[dry-run] Removing file %p\n"
;;
"")
find . -name "*~" -type f -printf "Removing file %p\n" -delete
;;
*)
echo "Unsupported option \''. Did you mean --dry-run?"
;;
esac
}
Em seguida, use como:
rm~ --dry-run
para mostrar apenas os arquivos que serão excluídos (mas não apagá-los) e, em seguida,
rm~
quando você está feliz com isso.
Adapte-se e estenda-se às suas necessidades!
Observação. Você terá que abrir um novo terminal para que as alterações entrem em vigor.