it-roy-ru.com

Удалите файлы старше 10 дней, используя скрипт в Unix

Я новичок в сценариях Shell, кто-нибудь может помочь? Я хочу удалить скрипты в папке с текущей даты до 10 дней. Сценарии выглядят так:

2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script

Сценарий будет запускаться каждые 10 дней с Crontab, поэтому мне нужна текущая дата.

117
Steve88

find - это общий инструмент для выполнения таких задач:

find ./my_dir -mtime +10 -type f -delete

ОБЪЯСНЕНИЯ

  • ./my_dir ваш каталог (замените свой собственный)
  • -mtime +10 старше 10 дней
  • -type f только файлы
  • -delete не удивительно. удалите его, чтобы проверить фильтр find перед выполнением всей команды

И позаботьтесь о том, чтобы существовал ./my_dir, чтобы избежать неприятных сюрпризов!

387
Gilles Quenot

Просто приправить скрипт Shell для удаления старых файлов

#!/bin/bash

timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename

find $path -name "*.txt"  -type f -mtime +7 -print -delete >> $log

echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log

START_TIME=$(date +%s)

... code for backup ...or any other operation ....


END_TIME=$(date +%s)

ELAPSED_TIME=$(expr $END_TIME - $START_TIME)


echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time ::  $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) "  >> $log

Код основан на ответе спутника и добавляет еще несколько вещей.

  • файлы журналов, названные с отметкой времени
  • указана папка журнала
  • find ищет файлы * .txt только в папке журнала
  • файлы журнала старше 7 дней удаляются (при условии, что это для резервного копирования журнала)
  • отмечает время начала/окончания
  • вычисляет прошедшее время ...
14
MarcoZen

Если вы можете позволить себе работать с данными файла, вы можете сделать

find -mmin +14400 -delete
6
glglgl