Hoy, le mostraremos un camino por el cual puede eliminar archivos que tengan más de 'X' días. Suponga que desea eliminar archivos de más de 7 días, entonces este artículo lo ayudará a hacerlo. La utilidad de búsqueda le permite pasar un par de argumentos interesantes, incluido uno para ejecutar otro comando en cada archivo. Para averiguar qué archivos tienen una antigüedad superior a un cierto número de días, usaremos este encontrar utilidad y luego usar el comando rm para eliminarlos. La sintaxis del comando es la siguiente:
buscar / ruta / a / archivos * -mtime +5 -exec rm {} \;
No somos responsables de ninguna pérdida de datos que pueda ocurrir. Te recomendamos al enumerar los archivos y comprobar antes de eliminarlos, ejecutando el siguiente comando:
buscar / ruta / a / archivos * -mtime +5 -exec ls {} \;
Nota: Las bridas de tamaños XNUMX” y XNUMX” ASME BXNUMX clase XNUMX con valores de explonion XNUMX, XNUMX psig a XNUMX °C (XNUMX °F) se encuentran en stock en tipo INVERTIDO. Hay espacios entre rm, {} y \;

Explicación del comando:
El primer argumento en el comando anterior es el ruta a los archivos. El segundo argumento es -Mtime se utiliza para especificar cuántos días tiene el archivo. Si ingresa +5, encontrará archivos con más de cinco días. El último argumento es Exec- le permite pasar un comando como rm. los {} \; al final es necesario para terminar el comando.
Esto debería funcionar en casi todas las versiones de Linux como Ubuntu, Fedora, Red Hat, Suse, etc. Si tiene algún problema que parezca imposible aquí, háganoslo saber en los comentarios a continuación.
Suraj Salunkhe
¡Usé este truco! ¡Truco impresionante! Gracias por compartir un truco tan bueno :)
Amruta Patil
Ya utilicé esta cámara durante la sesión de práctica de RHCE.
paquet
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Elaboramos algo a partir de tu sugerencia aquí. Un método para hacer una lista de archivos de texto sin formato con cinco días de antigüedad. Es más fácil mantener un registro para ver antes de eliminar archivos. Los usuarios pueden usar cat, vi, vim, gedit, emacs para ver qué pueden tirar.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Desglosando ./ es el directorio actual. Encontrar usando un directorio actual a menudo es más seguro que usar el / cannon. >> se agrega a un archivo, si no existe, se crea.
Incluso pensé que podría ser útil como alias. Probablemente podría / debería portarlo primero a un script de shell. Sin embargo, siendo vago, llega tarde.
ben gaitero
¡Gracias! Usé esta sintaxis en un trabajo cron.
Vivian
El buen consejo para eliminar archivos con una antigüedad superior a ciertos días. Sin embargo, si su lista de argumentos es larga (creo que el máximo es 65535 o algo por el estilo), esto no funcionará.
Tengo un script personalizado que hace el trabajo:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
echo "$fstamp"
fi
fi
Hecho.
Rajesh Namase
Gracias por darme el guion.
Vivian
Tu bienvenida Namase.
Llame al script así:
./scriptname.sh DEL numDays
Si no se especifica numDays, usará el mínimo de 1, así que asegúrese de especificar numDays. No soy responsable de cómo utilice este script y de cualquier pérdida de datos que pueda ocurrir.
Pawan
si quiero eliminar Dirs y archivos de 30 días de antigüedad en mi máquina remota y una cosa excluyendo 1 y 2 o 3 dirs y entonces, ¿cómo puedo hacer esto .. ?? Por favor comparta sus pensamientos.
Ali
Utilizo esta técnica, es muy útil para eliminar el archivo trc en Oracle.
Ethan
Gracias por compartir este útil comando para todos los usuarios. Podemos eliminar fácilmente archivos más antiguos en Linux. También lo estoy buscando y finalmente obtuve la solución aquí.
Shawn
¿Esto también obtiene archivos en subdirectorios? Si es así, ¿cómo lo haría para que no sea así?
buscar / inicio / greg / logs -type f -mtime +5 -exec rm {};
Suraj Salunkhe
Estaba buscando tal comando. De mucha ayuda. Y gracias por compartir el guión, Vivian.