Su alias bash no está bien escrito (las comillas simples no se usan bien). En cambio, debería ser:
alias rm~='find . -name "*~" -print0 | xargs -0 /bin/rm -f'
Ahora, personalmente no me gustan los usos inútiles de las tuberías y xargs
, por lo tanto, su alias estaría mejor escrito como:
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
La -type f
opción para encontrar solo archivos (no directorios, enlaces, etc.), la -v
opción rm
para ser detallado (imprime lo que está eliminando). Al +
final para que se find
ejecute rm
con todos los archivos encontrados (genera solo una instancia de rm
, en lugar de una por archivo).
Ahora de man bash
:
Para casi todos los propósitos, los alias son reemplazados por las funciones de shell.
En lugar de un alias, es mejor usar una función: comente su alias en el .bash_aliases
archivo (es decir, ponga un #
frente a esa línea), y en el archivo .bashrc
, coloque esta función (en cualquier parte del archivo, al final está bien) :
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
Además, como menciona la otra respuesta, puede usar el -delete
comando para buscar. En este caso, su rm~
función será:
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
De hecho, puede hacer una función genial que tomará un argumento, digamos --dry-run
, que solo generará lo que eliminará:
rm~() {
case "$1" 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 \`$1'. Did you mean --dry-run?"
;;
esac
}
Luego use como:
rm~ --dry-run
para mostrar solo los archivos que se eliminarán (pero no los eliminará) y luego
rm~
cuando eres feliz con esto
¡Adaptarse y extenderse a sus necesidades!
Nota. Tendrá que abrir una nueva terminal para que los cambios surtan efecto.