如何根据Perl中的创建日期时间删除文件?

Kim*_*cks 3 perl file

我的webapp托管在使用MySQL作为数据库的unix服务器上.

我写了一个Perl脚本来运行我的数据库备份.Perl脚本位于cgi-bin folde中,它正在运行.我只需要设置cronjob并每天运行一次Perl脚本.

备份存储在名为db_backups的文件夹中.但是,我还想在我的Perl脚本中添加一个命令来删除文件夹db_backups中比10天前更早的文件.

我搜索了unix命令的高低,找不到符合我需要的东西.

hob*_*bbs 9

if (-M $file > 10) { unlink $file }

或者,加上 File::Find::Rule

my $ten_days_ago = time() - 10 * 86400;
my @to_delete = File::Find::Rule->file()
  ->mtime("<=$ten_days_ago")
  ->in("/path/to/db_backup");
unlink @to_delete;
Run Code Online (Sandbox Code Playgroud)

  • @keisimone:O'Reilly有一本名为"Learning Perl"的书 (5认同)

bar*_*art 5

在Unix上您不能这样做,因为文件的创建日期未存储在文件系统中

如果您想使用带有相对时间戳的简单表达式(多久以前),则可能需要检出stat-M(修改时间)/ -C索引节点更改时间)/ -A(访问时间)。