我在 shell Perl 脚本中有以下内容:
my @LS = `ls -1t /logs/log.csv.*`;
foreach my $line (@LS) {
如果确实存在一个或多个 log.csv.* 文件,则此方法可以正常工作。
但是如果不存在日志文件,我会收到错误: ls: 无法访问...
我可以以某种方式抑制这个警告,因为 shell 脚本是一个 cron 脚本,如果没有文件也可以吗?
最佳答案
这一切都在 Perl 中完成,包括按上次修改时间戳进行反向排序:
在这个例子中,我也做了它,所以它只对每个文件执行一次“stat”。
my @LS = glob('/logs/log.csv.*');
my @mtimes = map { (stat)[9] } @LS;
my @sorted_indexes = sort { $mtimes[$b] <=> $mtimes[$a] } 0 .. $#mtimes;
foreach my $line ( @LS[ @sorted_indexes ] ) {
...
}
关于perl - 循环遍历文件行,如果文件不存在则抑制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984741/