我在shell Perl脚本中有以下内容:
my @LS = `ls -1t /logs/log.csv.*`;
foreach my $line (@LS) {
Run Code Online (Sandbox Code Playgroud)
如果实际存在一个或多个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 ] ) {
...
}
Run Code Online (Sandbox Code Playgroud)
您想将错误输出重定向到/ dev/null:
my @LS = `ls -1t /logs/log.csv.* 2>/dev/null`;
Run Code Online (Sandbox Code Playgroud)