A solução óbvia produz um código de saída 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Uma solução possível pulará o "." e diretórios "..", mas excluirá apenas arquivos cujos nomes tenham mais de 3 caracteres:
bash$ rm -f .??*
Respostas:
Deve pegar todos os casos. O. ?? * corresponderá apenas a nomes de arquivos com mais de 3 caracteres (como explicado na resposta anterior), o. [^.] Capturará quaisquer duas entradas de caracteres (exceto ..).
fonte
zsh
. Alguma sugestão?zsh
por padrão um coringa vazia é tratada como um erro; enquanto que combash
isso é simplesmente passado inalterado. Para fazer com quezsh
se comportam da mesma maneira que você pode usar o comandounsetopt nomatch
Isso corresponde a todos os arquivos no diretório atual que começam com a
.
e os excluem recursivamente. Arquivos ocultos em diretórios não ocultos não são tocados.Caso você realmente desejasse apagar tudo de um diretório,
find -delete
seria suficiente.fonte
.
melhor maneira provavelmente é:
altere rm para ls -l se você quiser apenas ver o que seria excluído, para detalhar a saída, u pode querer adicionar a opção -v para rm
ps. não esqueça de terminar '\;'
fonte
fonte