我一直在编写一个脚本,它将递归搜索文件系统并删除任何超过20天的文件(没有目录)。我使用了find2perl
命令(File::Find的一部分),这就是结果。 (我注意到它并不理解-delete
选项,因此我不得不使用旧的-exec...
选项。)
(部分脚本被截断)
sub delete_old_files {
my ($dev,$ino,$mode,$nlink,$uid,$gid);
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-f _ &&
(int(-M _) > 20) &&
unlink($_);
}
我理解lstat
部分,-f
文件检查和unlink
,但我不确定(int(-M _) > 20)
的工作原理。显然它是在20天内检查修改日期,但我以前从未见过这种语法,并且很想知道它来自何处以及它是如何工作的。我还很好奇它如何将迭代器作为简单的下划线引用而不使用$_
和-f
以及时间检查件。