LINUX
Shell Script para buscar archivos anteriores a X días y eliminarlos
Útil para el administrador, si es necesario, encuentre rápidamente archivos antiguos y elimine los archivos necesarios. Este script de shell encontrará archivos que son más antiguos por X días y luego confirmará al usuario que los elimine.
La secuencia de comandos le preguntará al usuario de forma interactiva antes de eliminar los archivos o directorios más antiguos.
Shell Script para eliminar el archivo por X días
#!/bin/bash #we check for parameters #Directory is required parameter, to avoid deleting from any other folders if [ $# -eq 0 ]; then echo "`basename $0` " echo "Script will delete file folders older than inside " echo "If no days inputed, will use 7 days as default" fi #We save variables DIR=$1 #check if user input days if [ x"$2" = "x" ]; then #if user didn't input days, we will use default value DAYS="7" else DAYS="$2" fi #this will create list of folders older that X days. We use command find to find them, and set maxdepth # to 1, we don't need recursively find all folders dirlist=`find $DIR -maxdepth 1 -type d -mtime +$DAYS` #now we will process each folder for dir in ${dirlist} do #this will check if user have read and write permissions if [ ! -r ${dir} -o ! -w ${dir} ]; then #if no permissions just warn, without try to delete echo "Access denied to folder ${dir}" else #if we have permissions – we ask user if really delete read -p "Delete folder ${dir} and all subfolders? [y/n]" confirm #check if user confirm deleting if [ "$confirm" = "y" ]; then #if user confirm – rm command to delete rm -rf ${dir} fi fi done #same as with directories we do with files #we get list filelist=`find $DIR -maxdepth 1 -type f -mtime +$DAYS` #proceed with every file for file in ${filelist} do #we check permissions if [ ! -r "${file}" -o ! -w "${file}" ]; then echo "Access denied to file ${file}" else #if we have permissions we ask about confirmation read -p "Delete file ${file}? [y/n]" confirm if [ "$confirm" = "y" ]; then #if confirmed – we delete file. rm -rf ${file} fi fi done
Salida de secuencia de comandos
En el siguiente script, estamos eliminando archivos y directorios que tienen 7 días de antigüedad:
Server1:~/$ ./delete_xdays.sh /home/yevhen/Downloads 7 Delete folder /home/yevhen/Downloads/CENTOS and all subfolders? [y/n]n Delete folder /home/yevhen/Downloads/TFTP and all subfolders? [y/n]y Delete file /home/yevhen/Downloads/Oracle_Solaris_Studio.certificate.pem? [y/n]^C
Server1:~/$ ./delete_xdays.sh /home/yevhen/Downloads 7 Delete folder /home/yevhen/Downloads/CENTOS and all subfolders? [y/n]n Delete file /home/yevhen/Downloads/Oracle_Solaris_Studio.certificate.pem? [y/n]n Delete file /home/yevhen/Downloads/sol-11_1-text-x86.iso? [y/n]^C