Me gustaría eliminar todos los archivos, pero mantener la estructura de carpetas. ¿Hay alguna manera?
NOTA: (Estoy usando GNU bash 4.1.5).
Me gustaría eliminar todos los archivos, pero mantener la estructura de carpetas. ¿Hay alguna manera?
NOTA: (Estoy usando GNU bash 4.1.5).
Respuestas:
Prueba esto:
find . ! -type d -exec rm '{}' \;
Esto eliminará todos los archivos, excepto los directorios, debajo del directorio de trabajo actual. Ten mucho cuidado con este comando.
Si la versión de find
su máquina lo admite, también puede usar
find . ! -type d -delete
find
comando nunca ve las comillas. Simplemente ve el {}
marcador como un argumento.
-exec command {} +
" y esto " -exec command ;
". He usado el \;
en el pasado simplemente nunca el '{}'.
Puede usar el comando find
para localizar cada archivo pero mantener la estructura del directorio:
$ find /some/dir -type f -exec rm {} +
Según estas preguntas y respuestas de Unix y Linux tituladas: gnu encuentra y enmascara el {} para algunos shells, ¿cuál? , escapar {}
con ticks individuales ( '
) ya no parece ser necesario con shells modernos como Bash.
La forma fácil de eliminar todos los archivos regulares en el directorio y subdirectorios actuales de forma recursiva:
zsh -c 'rm **/*(.)'
Solo zsh tiene calificadores globales para hacer coincidir los archivos por tipo. Sin embargo, el rm
comando no funciona en directorios, por lo que en bash, puede usar
shopt -s globstar
rm **/*
Esto no funciona para otros comandos que no sean rm
. En general, puedes usar find
:
find . -type f -delete
o si tu find
no es compatible -delete
:
find . -type f -exec rm {} +
Tenía un requisito similar para eliminar archivos de una ruta y sus subdirectorios (filtrado por tiempo) sin eliminar la estructura del directorio.
Y he usado el siguiente formato que funcionó para mí.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex: find (ruta del archivo) -mtime (mayor o menor que días) -type f -exec rm {} \;
-tipo: Mencione el tipo de archivo "f" para el directorio "d" -exec: ejecute el comando rm: remove {}: salida del comando find
Nota: Pruébelo antes de usarlo. No dude en corregir o actualizar si me perdí algo.
find ... rm
estructura básica ya ha sido cubierta, no estoy seguro de que esta sea una contribución valiosa como una nueva Respuesta a esta pregunta.