如果匹配,我们需要删除特定目录中的某些文件 以下标准
文件应超过72小时
如果unix中的文件权限是只读chmod 444那么你不应该 删除该文件。其他文件权限,如果超过72小时我们必须 从目录中删除文件。
请帮我解决这个perl脚本
此致
维克拉姆
答案 0 :(得分:1)
为什么在find
已有选项的情况下编写Perl脚本来执行此操作?
您可以find
使用-perm
和-mtime
选项来选择符合条件的文件。如果您不想进入子目录,您可能还想使用-maxdepth 0
。
良好的开端将是:
find . -maxdepth 0 ! -perm 0444 ! -mtime 2 -delete
虽然我在最后添加-delete
之前彻底测试了非常: - )
应(从内存开始,因此先测试)使用444
以外的权限删除当前目录中的文件,并且在过去三天内未修改。< / p>
答案 1 :(得分:0)
我同意使用find(1)会更快。
但是如果你想在perl中这样做,这里有一个示例脚本,它将构建要删除的文件列表,然后将它们全部一次性删除。
use strict;
my $dir = '/some/directory';
opendir DIR, $dir;
my @list =
map { "$dir/$_" }
grep { -f "$dir/$_" && -M _ > 3 && ((stat _)[2] & 0777) == 0444 }
readdir DIR;
closedir DIR;
unlink @list;
添加检查和错误消息以及适当的地方。并且首先,不要心不在焉地在你的主目录上运行它以确保它有效(就像我刚刚做的那样,稍微改变条件以确保它匹配几个文件):)