Escribo el siguiente comando para eliminar todos los archivos que tienen más de 7 días, pero no funciona:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
¿Cómo puedo eliminar estos archivos?
command-line
delete
find
rm
Malihe Pakyari
fuente
fuente
name
y'*.gz'
.Respuestas:
Como @Jos señaló que te perdiste un espacio entre
name
y'*.gz'
; También para acelerar el uso de comandos-type f
opción de ejecutar el comando en f iles solamente.Entonces el comando fijo sería:
Explicación:
find
: El comando UNIX para encontrar f iles / d irectories / l tintas y etc./path/to/
: el directorio para comenzar su búsqueda.-type f
: solo busca archivos.-name '*.gz'
: enumera los archivos que terminan en.gz
.-mtime +7
: solo considere los que tienen un tiempo de modificación mayor a 7 días.-execdir ... \;
: para cada resultado encontrado, realice el siguiente comando en...
.rm -- '{}'
: eliminar el archivo; la{}
parte es donde se sustituye el resultado de la búsqueda de la parte anterior.--
significa que los parámetros de fin de comando evitan el error de solicitud para aquellos archivos que comienzan con guión .Alternativamente, use:
Del hombre encuentra :
Lo cual es un poco más eficiente, porque equivale a:
Opuesto a:
como en el
-exec
métodoUn comando alternativo y también más rápido es usar el
+
terminador de exec en lugar de\;
:Este comando se ejecutará
rm
solo una vez al final en lugar de cada vez que se encuentre un archivo y este comando es casi tan rápido como usar la-delete
opción que se muestra en modernofind
:fuente
-delete
al final? ¿Por qué meterse con el+
o\;
?Tenga cuidado al eliminar archivos con find. Ejecute el comando con -ls para verificar lo que está eliminando
find /media/bkfolder/ -mtime +7 -name '*.gz' -ls
. Luego, abra el comando del historial y agregue-exec rm {} \;
Limite el daño que puede hacer un comando de búsqueda. Si desea eliminar archivos de un solo directorio,
-maxdepth 1
evita que find recorra los subdirectorios o busque en el sistema completo si escribe/media/bkfolder /
.Otros límites que agrego son argumentos de nombre más específicos
-name 'wncw*.gz'
, como agregar un tiempo más reciente-mtime -31
y citar los directorios buscados. Estos son particularmente importantes si está automatizando limpiezas.find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;
fuente