¿Cómo eliminar todos los archivos de un directorio?

217

Lo más cerca que he estado es

# rm /path/to/directory/*.*

pero eso no funciona para archivos que no tienen una extensión ...

    
pregunta user784637 06.09.2011 - 09:58

9 respuestas

254

Linux no usa extensiones. Depende del creador del archivo decidir si quiere que el nombre tenga una extensión. Linux mira el primer byte para averiguar con qué tipo de archivo está tratando.

Para eliminar todo en un directorio, use:

rm /path/to/directory/*

Puedes usar la opción -r , por ejemplo:

rm -r /path/to/directory/*

para eliminar también los subdirectorios (junto con todo su contenido) dentro del directorio del que está eliminando el contenido. De lo contrario, mostrará un error que le informa que no está eliminando el directorio.

    
respondido por el Rinzwind 06.09.2011 - 10:06
134
  • Para eliminar la carpeta con todo su contenido ( incluidas todas las carpetas interiores ):

    rm -rf /path/to/directory
    
  • Para eliminar todos los contenidos de la carpeta ( incluidas todas las carpetas interiores ) pero no la carpeta en sí:

    rm -rf /path/to/directory/*
    

    o

    rm -rf /path/to/directory/{*,.*}
    

    si desea asegurarse de que también se eliminen los archivos / directorios ocultos.

  • Para eliminar todos los "archivos" de una carpeta ( no eliminando las carpetas interiores ):

    rm -f /path/to/directory/{*,.*}
    

Donde:

  • rm : significa " eliminar "
  • -f - significa " fuerza ", que es útil cuando no desea que se le pregunte / pregunte si desea eliminar un archivo, por ejemplo.
  • -r - significa " recursivo ", lo que significa que desea ir recursivamente hacia abajo en todas las carpetas y eliminar todo.
respondido por el Lilian A. Moraru 07.09.2011 - 19:26
34

Para eliminar todos los archivos del directorio (incluidos los archivos ocultos y los subdirectorios), ejecute:

rm -rf /path/to/directory/{*,.*}
    
respondido por el Leonid V. Fedorenchik 23.11.2014 - 10:38
8

Si desea eliminar solo los archivos en el directorio / ruta / al directorio que puede hacer

find /path/to/directory -type f -print0| xargs -0 rm 

o

find /path/to/directory -type f -exec rm '{}' \;

Puede hacer cargas con find , la ventaja es que puede enumerar lo que se encuentra sin canalizarlo a rm para que pueda ver lo que se eliminará antes de comenzar.

    
respondido por el Richard Holloway 06.09.2011 - 14:13
6

Si también desea eliminar todos los subdirectorios y el directorio mismo, puede usar rm -rf /path/to/directory . Pero siempre revise dos veces su línea antes de presionar retorno, rm -rf también puede causar mucho daño, por ejemplo. si accidentalmente inserta un espacio después de la primera barra mientras tiene permisos de superusuario ...

    
respondido por el Tobias Kienzler 07.09.2011 - 10:51
6

Para eliminar todos los archivos y directorios (incluidos los ocultos ) en un directorio, puede intentar lo siguiente:

  • elimine la carpeta, luego vuelva a crearla

    rm -rf dir_name && mkdir dir_name
    
  • usa find

    find dir_name -mindepth 1 -delete  
    

Aquí especificamos -mindepth 1 para excluir el directorio dir_name.
Eche un vistazo al siguiente enlace:
enlace

    
respondido por el zeekvfu 27.11.2013 - 17:05
1

Puede cd en el directorio y luego ejecutar el comando rm *.* como en DOS si lo recuerda.

    
respondido por el V K Mavani 01.05.2013 - 02:59
0

Para eliminar el directorio actual, podría, por ejemplo, usar rm -d ./*

-d también indica que se eliminen directorios.

    
respondido por el arviman 29.08.2017 - 09:17
-1

Dado que esta pregunta está constantemente en la parte superior de Google cuando busco esto yo mismo:

Las otras respuestas tienen diferentes problemas:

  1. Algunos de ellos incluyen . y .. , que es ruidoso, confuso y molesto.

  2. Algunos de ellos olvidan archivos ocultos (archivos que comienzan con un punto).

  3. No se eliminan en el orden correcto (primero en lo más profundo) para permitir la eliminación del directorio.

  4. Descienden a otros sistemas de archivos (montados), que a menudo no son deseados.

  5. Es difícil extenderlos adecuadamente con parámetros adicionales (más sobre esto más adelante).

Entonces, para RECURSIVAR eliminar todos los archivos Y carpetas en un directorio, haga esto:

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p
-not \( -path "${DIR}/subdir" -prune \)
" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

Tenga en cuenta que agregué un argumento -xdev para evitar descender a los montajes (como /proc , etc.).

¿Por qué no -depth o -delete ?

A pesar de que la gente me rechaza constantemente por esto, esos métodos tienen un inconveniente: no parece que sean lo suficientemente extensos para permitir que -prune ing un subdirectorio (sin introducir más problemas). En contraste con este método, puedes insertar

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p
-not \( -path "${DIR}/subdir" -prune \)
" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

antes del argumento -mindepth para excluir a subdir de que se elimine su contenido.

    
respondido por el Mehrdad 21.05.2018 - 02:54

Lea otras preguntas en las etiquetas