perl 文件,目录操作

文件检测操作符
-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  ( - $file ) {
            
chdir  ( $file );   #  子目录一直保持在当前目录工作
             & changeName(`pwd`);
            
chdir  ( " .. " );
        }
        
elsif  ( - $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 " ;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值