Tengo una carpeta con 137795 archivos. Necesito eliminarlos todos. Cuando corro rm *
obtengo -bash: /bin/rm: Argument list too long
. ¿Cómo supero este error?
Respuesta1
Como puedo ver, no es necesario eliminar el directorio, solo los archivos que contiene. Para que puedas recrearlo
rm -r /path/to/dir && mkdir /path/to/dir
o incluso eliminar sólo archivos dentro
find /path/to/dir -type f -delete
El primero funciona más rápido.
UPD. Tenga en cuenta que la forma en que find
puede no ser óptima desde el punto de vista del consumo de espacio, ya que el tamaño del directorio se reducirá solo después de fsck
.Detalles.
Respuesta2
Solución #1:
find /path/to/dir -delete
Solución #2:
rm a*;
rm b*;
rm c*;
etc
Respuesta3
Usar find
es probablemente la mejor opción. Algunos de los problemas con las otras respuestas son no eliminar todo lo que hay dentro del directorio o eliminar el directorio mismo. Puedes usarlo ls
con xargs
, si no hay caracteres especiales, o find
con ciertas opciones.
ls -1 | xargs rm -r
o
find . -depth -path ./.* -prune -o -not -name . -delete
Esto ignorará todo lo que esté en el directorio actual que comience con .
( -prune
) y eliminará cualquier otro archivo o directorio, siempre que no sea el directorio superior ( .
). Primero buscará -depth
dentro de los directorios, lo que evitará un error de "directorio no vacío". Si el -not
argumento no está disponible en su sistema, utilice !
.