设为首页 收藏本站
查看: 1142|回复: 0

[经验分享] Perl文件和目录操作

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-28 10:56:41 | 显示全部楼层 |阅读模式
  Perl操作文件
  -e 判断文件是否存在
  die “Oops! A file called‘$filename’already exists.\n”; if –e $filename;
  -M 查看文件多久没有修改
  warn “Config file is looking pretty old!\n”; if –M CONFIG > 28; (文件在过去的28天都没修改过)
  example:
  找到大于100K,并且在90天内未被访问过的文件
  my@ariginal_files = qw/ fred barney betty Wilma pebbles dino bam-bamm/;
my @big_old_files; #要移到备份磁带上的文件
foreach my $filename (@original_files){
push @big_old_files, $filename
if –s $filename > 100_100 and –A $filename > 90;
}
  检测选项含义
-r 文件或目录对此(有效的)用户(effective user)或组是可读的
-w 文件或目录对此(有效的)用户或组是可写的
-x 文件或目录对此(有效的)用户或组是可执行的
-o 文件或目录由本(有效的)用户所有
-R 文件或目录对此用户(real user)或组是可读的
-W 文件或目录对此用户或组是可写的
-X 文件或目录对此用户或组是可执行的
-O 文件或目录由本用户所有
-e 文件或目录名存在
-z 文件存在,大小为0(目录恒为false)
-s 文件或目录存在,大小大于0(值为文件的大小,单位:字节)
-f 为普通文本
-d 为目录
-l 为符号链接
-S 为socket
-p 为管道(Entry is a named pipe(a“fifo”))
-b 为block-special 文件(如挂载磁盘)
-c 为character-special 文件(如I/O 设备)
-u setuid 的文件或目录
-g setgid 的文件或目录
-k File or directory has the sticky bit set
-t 文件句柄为TTY(系统函数isatty()的返回结果;不能对文件名使用这个测试)
-T 文件有些像“文本”文件
-B 文件有些像“二进制”文件
-M 修改的时间(单位:天)
-A 访问的时间(单位:天)
-C 索引节点修改时间(单位:天)
  
  目录操作:
  chdir  改变工作目录
  chdir “/etc”or die “cannot chdir to /etc: $!”;
  glob  文件名匹配
  my @pm_files = glob “*.pm”  匹配所有.pm文件
  unlink  删除文件 (返回值为成功删除的文件个数)
  unlink “slate”, “bedrock”, “lava”;
  unlink glob “*.o”;  删除所有.o文件
  rename  重命名 (类似于mv)
  rename “old”, “new”;
  link  硬连接
  symlink  软连接
  mkdir  创建目录
  mkdir “fred”, 0755 or warn “Cannot make fred directory: $!”;
  my ($name, $perm) = @ARGV; #前面两个参数是名字和权限
  mkdir $name, oct($perm) or die “cannot create $name: $!”; #oct将参数强制转为8进制,不管前面有没有0
  
  
  目录句柄
  从给定目录得到其文件名列表的方法还可以使用目录句柄(directory handle)。目录句柄外形及其行为都很像文件句柄。打
开(使用opendir 而非open),从中读入(使用readdir 而非readline),关闭(使用closedir 而非close)。不是读入文件的内
容,而是将一个目录中的文件名(以及一些其它东西)读入,如:
  my $dir_to_process = “/etc”
  opendir DH, $dir_to_process or die “Cannot open $dir_to_process: $!”;
foreach $file(readdir DH) {
print “one file in $dir_to_process is $file\n”;
}
closedir DH;
  readdir用在while中
  while ($name = readdir DIR) {
next unless $name =~ /\.pm$/;
… more processing…
}
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157365-1-1.html 上篇帖子: perl备忘 下篇帖子: Perl最佳实践读书笔记-第四章(值和表达式)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表