Cómo eliminar todos los archivos de un directorio?

Lo más cerca que he estado es

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

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

Linux no usa extensiones. Depende del creador del archivo decidir si el nombre debe tener una extensión. Linux mira los primeros bytes para averiguar con qué tipo de archivo está tratando.

  • Para eliminar todos los archivos no ocultos* en un directorio uso:

    rm /path/to/directory/*

    Sin embargo, esto mostrará un error para cada subdirectorio, porque en este modo solo se permite eliminar archivos.

  • Para eliminar todos los archivos y subdirectorios no ocultos (junto con todo su contenido) en un directorio, use:

    rm -r /path/to/directory/*

* Los archivos y directorios ocultos son aquellos cuyos nombres comienzan con . carácter (de puntos), p. ej.: .hidden-file o .hidden-directory/. Tenga en cuenta que, en Bash, si el dotglob opcion (que está desactivado de forma predeterminada) está configurado, rm también actuará sobre los archivos ocultos, ya que se incluirán cuando * es expandido por el shell para proporcionar la lista de argumentos de nombre de archivo.

  • Para eliminar una carpeta con todo su contenido (incluidas todas las carpetas interiores):

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

    rm -rf /path/to/directory/*

    o, si desea asegurarse de que los archivos/directorios ocultos también se eliminen:

    rm -rf /path/to/directory/{*,.*}
  • Para eliminar todos los & quot; archivos" del interior de una carpeta(ni eliminación de carpetas interiores):

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

Advertencia: si tiene espacios en su ruta, asegúrese de usar siempre comillas.

rm -rf /path/to the/directory/*

es equivalente a 2 separados rm -rf llamada:

rm -rf /path/torm -rf the/directory/*

Para evitar este problema, puede usar 'comillas simples'(evita todas las expansiones, incluso de variables de shell) o "comillas dobles"(permite la expansión de variables de shell, pero evita otras expansiones):

rm -rf "/path/to the/directory/"*

Donde:

  • rm - representa quitar
  • -f - representa fuerza lo cual es útil cuando no desea que se le pregunte / solicite si desea eliminar un archivo, por ejemplo.
  • -r - representa recursivo lo que significa que desea ir recursivamente hacia abajo en cada carpeta y eliminar todo.

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

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

Para eliminar todos los archivos y directorios (incluido el oculto en un directorio, puede intentar lo siguiente:

  • elimine la carpeta y, a continuación, vuelva a crearla

    rm -rf dir_name && mkdir dir_name
  • utilizar find

    find dir_name -mindepth 1 -delete  

Aquí especificamos -mindepth 1 para excluir el propio directorio dir_name.
Echa un vistazo al siguiente enlace:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory

Si desea eliminar solo los archivos en / path / to / directory, puede hacer lo siguiente

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

o

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

Puedes 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.

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

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

Las otras respuestas sufren de diferentes problemas:

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

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

  3. No se eliminan en un orden correcto (primero el más profundo) para permitir la eliminación de directorios.

  4. Descienden a otros sistemas de archivos (montados), lo que a menudo no es deseado.

  5. Son difíciles de extender correctamente con parámetros adicionales (más sobre eso a continuación).

Por lo tanto, para eliminar de forma RECURSIVA todos los archivos Y carpetas de un directorio, haga lo siguiente:

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

Tenga en cuenta que agregué un -xdev argumento para evitar descender a monturas (como /proc sucesivamente.).

Por qué no -depth o -delete?

A pesar de que la gente me rechaza constantemente por esto, esos métodos tienen una desventaja: no parece que sean lo suficientemente extensibles como para permitir -prunecrear un subdirectorio (sin introducir más problemas). En contraste con este método, puede insertar

-not \( -path "${DIR}/subdir" -prune \)

antes de la -mindepth argumento para excluir subdir de que se borre su contenido.

Usted puede cd en el directorio y, a continuación, ejecute el comando rm *.* como en DOS, si recuerdas.

Para eliminar el directorio actual, por ejemplo, puede usar rm -d ./*

-d indica que también se eliminen los directorios.

Vea la respuesta aquí, esto también puede eliminar archivos ocultos sin ninguna advertencia y eliminando el directorio en sí ubuntu - Delete contents but not directory in Linux? - Stack Overflow

No tengo suficiente reputación para agregar una respuesta real, pero cuando uso la solución shopt-s dotglob && rm /path/to/directory/* en bash, (shopt-s dotglob && rm /path/to/directory/*) (con paréntesis) evitará que shopt-s dotglob se filtre más allá de este comando. (Los paréntesis ejecutan los comandos contenidos en una subcapa.)