Lo más cerca que he llegado es
# rm /path/to/directory/*.*
pero eso no funciona para archivos que no tienen una extensión ...
Lo más cerca que he llegado es
# rm /path/to/directory/*.*
pero eso no funciona para archivos que no tienen una extensión ...
Respuestas:
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 descubrir qué tipo de archivo está tratando.
Para eliminar todo en un directorio use:
rm /path/to/directory/*
Puede usar la -r
opción, por ejemplo:
rm -r /path/to/directory/*
para eliminar también cualquier subdirectorio (junto con todo su contenido) dentro del directorio del que está eliminando el contenido. De lo contrario, mostrará un error informándole que no está eliminando el directorio.
all files
;) *.*
significa todos los archivos que contienen un .
lugar en el nombre
*a*
significa cero o más caracteres, a
seguidos de cero o más caracteres. Sería coincidir con los nombres de archivo happy
, apple
, a
o la
.
Para eliminar la carpeta con todo su contenido ( incluidas todas las carpetas interiores ):
rm -rf /path/to/directory
Para eliminar todo el contenido 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" del interior de una carpeta ( sin eliminar las carpetas interiores ):
rm -f /path/to/directory/{*,.*}
Advertencia : si tiene espacios en su camino, asegúrese de usar siempre comillas.
rm -rf /path/to the/directory/*
es equivalente a 2 rm -rf
llamadas separadas :
rm -rf /path/to
rm -rf the/directory/*
Para evitar este problema, puede usar '
comillas simples '
( no expande las variables de shell) o "
comillas dobles "
( expande las variables de shell):
rm -rf "/path/to the/directory/"*
Dónde:
rm
- significa " eliminar "-f
- significa " forzar ", 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 a cada carpeta y eliminar todo.rm -rf /path/to/directory/*
no elimina un archivo oculto en la carpeta, por ejemplo .htaccess
. Tal vez rm -rf /path/to/directory/.
? No lo he intentado.
rm -rf /path/to/directory/.*
solo elimina los archivos ocultos en el directorio especificado. Mirando el comentario de @ danjjl sobre la respuesta de @ Rinzwind, para eliminar también los archivos ocultos, ejecute shopt -s dotglob
antes de ejecutar rm -rf /path/to/directory/*
.
rm -rf /path/to/directory/.*
en mi sistema causó la eliminación de elementos en /path/to
. Afortunadamente, acababa de hacer una copia de seguridad de todos mis datos en un disco separado. ¡No hace falta decir que NO ejecute el comando a rm -rf /path/to/directory/.*
menos que haya hecho una copia de seguridad de toda su computadora en una ubicación separada / segura!
Para eliminar todos los archivos en el directorio (incluidos los archivos ocultos y subdirectorios) ejecute:
rm -rf /path/to/directory/{*,.*}
./
y ../
, pero aún eliminará los archivos ocultos.
rm -r $(pwd)/{*,.*}
Si desea eliminar solo los archivos en el directorio / ruta / al / puede hacerlo
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 para rm
que pueda ver lo que se eliminará antes de comenzar.
GNU find
como -delete
predicado Si todavía desea usar -exec
, la sustitución \;
con +
reunirá rm
llamadas, aumentando la eficiencia.
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
utilizar find
find dir_name -mindepth 1 -delete
Aquí especificamos -mindepth 1
para excluir el directorio dir_name en sí.
Eche un vistazo al siguiente enlace:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
Si también desea eliminar todos los subdirectorios y el directorio en sí, puede usar rm -rf /path/to/directory
. Pero siempre verifique dos veces su línea antes de presionar Intro, también rm -rf
puede causar muchos estragos, por ejemplo, si inserta accidentalmente un espacio después de la primera barra oblicua 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:
Algunos de ellos incluyen .
y ..
que es ruidoso, confuso y molesto.
Algunos de ellos olvidan los archivos ocultos (archivos que comienzan con un punto).
No eliminan en un orden correcto (el más profundo primero) para permitir la eliminación del directorio.
Descienden a otros sistemas de archivos (montados), que a menudo no son deseados.
Son difíciles de extender adecuadamente con parámetros adicionales (más sobre eso a continuación).
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
etc.).
-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 extensibles como para permitir -prune
un subdirectorio (sin introducir más problemas). En contraste con este método, podría insertar
-not \( -path "${DIR}/subdir" -prune \)
antes del -mindepth
argumento para excluir subdir
que se elimine su contenido.
-depth
bandera find
para eso.
-delete
confind
? -delete
es profundo primero. Ya está asumiendo que no es POSIX find
con el -printf
, por lo que podría usar -delete
o-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... ¿pero el mío sí? ¿Por qué?
shopt -s dotglob
antes de ejecutarlosrm (...)