| -e | 文件是否存在 |
| -f | 文件是普通文件 |
| -d | 文件是目录 |
| -r | 文件是否可读 |
| -w | 文件时候可写 |
| -x | 文件是否可执行 |
| -s | 文件存在且大小非零,返回文件大小的字节数 |
| -z | 文件存在且大小为0 |
| -B | 文件是二进制文件 |
| -T | 文件是文本文件 |
| -A | 距离上次文件被访问年限 |
| -M | 距离上次文件被修改年限 int(var) 函数取整 |
| -C | 距离创建文件的年限 |
# 功能:将目标目录下的以.logbak结尾的文件更名为.log
use strict;
use warnings;
sub changeName {
chdir shift;
print `pwd`; # 打印当前目录
for my $file (glob("*")) { # glob不会包含.和.. 目录
if (-d $file) {
chdir ($file); # 子目录一直保持在当前目录工作
&changeName(`pwd`);
chdir ("..");
}
elsif (-f $file && $file =~ /(.+)(.logbak)$/i) {
if (-f $1.".log") { # 防止更名误覆盖文件
rename ($1.".log",$1.".newlog");
}
rename ($file,$1.".log");
}
}
}

&changeName(shift); # 参数为目标目录

my $path = `pwd`;
chomp $path; # `pwd`命令结尾有个回车符,需要chomp去掉
print "$path ";
opendir DIR ,$path || die "cant open $!";
foreach my $file (readdir DIR) { # readdir 将读出所有的文件和目录,包括.和..
print "$file ";
}
753



被折叠的 条评论
为什么被折叠?



