Seu alias do bash 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, pessoalmente, eu não gosto de usos inúteis de pipes e xargs
, portanto, seu apelido seria melhor escrito como:
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
A -type f
opção para encontrar apenas arquivos (não diretórios, links etc.), a -v
opção rm
para ser detalhado (imprime o que está excluindo). O +
no final, para que seja find
executado rm
com todos os arquivos encontrados (gera apenas uma instância de rm
, em vez de uma 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 apelido, é melhor usar uma função: comente seu apelido no .bash_aliases
arquivo (por exemplo, coloque um #
na frente dessa linha) e, no arquivo .bashrc
, coloque essa função (em qualquer lugar do arquivo, no final, tudo bem) :
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
Além disso, como a outra resposta menciona, você pode usar o -delete
comando para encontrar. Nesse caso, sua rm~
função será:
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
De fato, você pode criar uma função interessante que levará um argumento, digamos --dry-run
, que apenas produzirá o que será excluído:
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
}
Então use como:
rm~ --dry-run
para mostrar apenas os arquivos que serão excluídos (mas não para excluí-los) e, em seguida,
rm~
quando você está feliz com isso.
Adapte e estenda às suas necessidades!
Nota. Você precisará abrir um novo terminal para que as alterações entrem em vigor.
find -type f -name '*~' -delete
(arma de escolha, além dissogit clean -dfx .
)*~
é expandido pelo shell antes de ser atribuído ao seu alias. A atribuição real é:Sugiro usar funções em vez de pseudônimos; elas são muito mais poderosas e fáceis de manusear em relação a aspas.
Enquanto estamos nisso, remova o supérfluo
.
(o diretório atual é implícito se nenhum parâmetro for fornecido) e pare de abusar,xargs
pois-delete
já existe uma opção.A
-ls
opção é opcional, mas adicioná-la mostrará quais arquivos foram excluídos.fonte
.bash_aliases
, mas eu costumo colocá-lo direto no meu.bashrc
.