perl文件和目录操作

上一篇 / 下一篇  2012-10-25 18:16:50

文件检测操作符
-e文件是否存在
-f文件是普通文件
-d文件是目录
-r文件是否可读
-w文件时候可写
-x文件是否可执行
-s文件存在且大小非零,返回文件大小的字节数
-z文件存在且大小为0
-B文件是二进制文件
-T文件是文本文件
-A距离上次文件被访问年限
-M距离上次文件被修改年限 int(var) 函数取整
-C距离创建文件的年限
更改访问许可权限
chmod (mode , fileList) mode为四位数字, 0XXX
文件重命名:
rename (fileName, newFileName)
注:创建新文件,旧文件删除,如果已存在newFileName文件则覆盖 。成功返回1
删除文件
unlink (fileList) 即删除所有硬链接,返回删除文件个数
文件通配:
glob("标识") # 引号不能少
<"标识">
标量环境:返回匹配的第一个文件
列表环境:返回匹配的文件列表
目录操作:
opendir (DIR, fileDir)
readdir(DIR) 返回文件列表
closedir DIR
需求实例:遍历一个文件夹,并将其中的某些文件更名
# 功能:将目标目录下的以.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 ";
}

TAG:

 

评分:0

我来说两句

显示全部

:loveliness::handshake:victory::funk::time::kiss::call::hug::lol:'(:Q:L;P:$:P:o:@:D:(:)

日历

« 2024-06-15  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 2524
  • 日志数: 62
  • 建立时间: 2011-08-27
  • 更新时间: 2015-11-02

RSS订阅

Open Toolbar