在Linux上删除包含日期戳作为文件名一部分的文件的更干净方法
我有一个新要求,要清除30天以上的MySQL转储文件。这些文件使用“ all-mysql-YYYYMMDD-HHMM.dump”的命名约定。这些文件位于SAN挂载的文件系统上,因此恢复不是问题,但是不幸的是,驱动器空间有限并且很快就会填满,因此需要频繁的人为干预。 文件名示例 全部-mysql-20130324-2330.dump 全部-mysql-20130325-2330.dump 全部-mysql-20130326-2330.dump 我首先想到的是在带有-mtime +30的批处理脚本中使用“查找”,但是,修改时间无法保证,某些较早的归档文件可能会清除清除日期:) 我创建了以下BASH脚本,但我希望有一种更干净的方法来执行此操作。 #!/bin/bash STARTING_DIR=$(pwd) FILE_PREFIX=all-mysql- BACKUP_DIR=/opt/backup/mysql/dumps ARCHIVE_WINDOW_DAYS=30 cd $BACKUP_DIR # Create YYYYMMDD datestamp for Today - $ARCHIVE_WINDOW_DAYS ARCHIVE_WINDOW_IN_SECS=$(echo "$(date +%s) - (${ARCHIVE_WINDOW_DAYS} * 86400)" | bc) PURGE_BEFORE_DATE=$(date -d @${ARCHIVE_WINDOW_IN_SECS} +%Y%m%d) for backup_file in $FILE_PREFIX* do # Trim prefix, time portion of date stamp, …