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.