La solución obvia produce un código de salida de 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Una posible solución omitirá el "." y "..", pero solo eliminará archivos cuyos nombres tengan más de 3 caracteres:
bash$ rm -f .??*
Respuestas:
Debería atrapar todos los casos. El. ?? * solo coincidirá con los nombres de archivo de más de 3 caracteres (como se explicó en la respuesta anterior), el. [^.] Capturará cualquier entrada de dos caracteres (que no sea ...).
fuente
zsh
. ¿Alguna sugerencia?zsh
forma predeterminada un partido de comodín vacío se trata como un error; mientras que conbash
esto simplemente se pasa sin cambios. Para que sezsh
comporte de la misma manera, puede usar el comandounsetopt nomatch
Esto coincide con todos los archivos en el directorio actual que comienzan con
.
ay los elimina recursivamente. Los archivos ocultos en directorios no ocultos no se tocan.En caso de que realmente quisieras borrar todo de un directorio,
find -delete
sería suficiente.fuente
.
La mejor manera probablemente es:
cambie rm a ls -l si solo desea ver lo que se eliminaría, para detallar la salida, es posible que desee agregar la opción -v a rm
PD. no te olvides de terminar '\;'
fuente
fuente