Perl 小骆驼学习笔记 - 11. 文件测试及目录操作

发布于:2025-07-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

1. 文件测试操作符:

      所有文件操作测试符都写作:-X(X表示特定的操作行为);

文件测试符

意义

-r

F/D,当前用户R+

-w

F/D, 当前用户W+

-x

F/D,当前用户执行+

-o

f/d,当前用户拥有

-R

f/d,用户组r+

-W

f/d,用户组w+

-X

-O

-e

f/d,存在

-z

文件存在但没内容(对目录恒为假)

-s

f/d存在且有内容,返回字节

-f

普通文件

-d

目录

-l

符号链接

-S

Socket型内容

-p

命名管道。fifo

-b

块设备文件,某挂载磁盘

-c

字符设备文件,某个I/O

-u

f/d设置了steuid位

-g

设置了Setgid位

-k

设置了sticky位

-t

文件句柄为TTY设备

-T

看起来像文本文件

-B

看起来像二进制文件

-A

最后一次访问距今天数

-M

最后一次修改距今天数

-C

最后一次文件节点编号被更改距今天数

    1.想以KB为单位衡量文件:

  my $size_file= (-s $file) /1024;

2.查询文件的多个性能

  if(-r -w -o -x $file ){};

    其中性能相当于多个测试的与;

3.stat和lsat函数

    在使用这两个函数时,将会得到文件或者文件句柄的很多属性;

4. 按位运算操作符

     采用二进制的形式进行计算的:

      &、|、^、<<、>>、~;和其他语言表达的意义一样。

5. 在目录树中移动

    更改工作目录(仅在Perl程序运行过程中有效):

chdir ' ' or die "  reasons  ";

    当后面不加参数时,则是回到主目录;

6.文件名的通配

      类似于shell中echo命令,Perl提供了文件名的通配:

      a、glob命令: 

 my @all_files = glob '*';

       单引号内表示通配的格式,可以通配多个格式,中间以空格隔开:

     b、采用<>;

           代替glob '';

           由于前面讲过<>表示从文件句柄读取,所以区分方法就是,当Perl认为<>内内容符合句柄的命名格式时,就按照文件句柄处理,反之,就是通配命令

7. 目录句柄

       和文件句柄基本一致,但是他得到的内容不是文件内容而是目录中文件名,另外他得到的几乎是目录的所有文件,所以可能包含不期望的文件,所以需要采用正则表达式对其进行剔除,同时,返回的结果也只有文件名的格式。

8.递归访问目录

  File::Find::find(....)

9.文件及目录的操作

      a、删除文件

            unlink '','','','';以单引号包围要删除的文件名,各文件名以空格隔开

 unlink qw(多个文件名,以空格隔开);

            可以结合glob删除很多后缀一样的文件:

             unlink glob '*.v';

           unlink返回值是删除成功文件的个数;可以采用循环判断文件是否删除成功!

10. 重命名文件

  rename 'old', 'new';

    和shell的mv指令一样,还可以移动文件;

    可以结合glob命令完成大量文件后缀的修改。

11.创建和删除目录

   创建目录:

mkdir 'file', '权限';

   移除空目录采用,rmdir '';但若是目录不为空则无法移除,这时需要采用unlink先删除目录内容

12. 修改权限

  chmod 755,'file1','file2';

13. 修改所属关系

        chown 在修改时,只接受数字形式的用户标识符和组标识符;

        但如果不是数字,咋办?

         采用,getpwnam函数完成转换:

defined(my $user = getpwnam 'a') or die "no user";

defined(my $group = getpwnam 'b') or die "no one";

chown $user,$group, glob '/home/a/*';

        defined是为了判断是否转换成功。

14. 修改时间

        utime函数       

 #utime  新的访问时间,新的修改时间,被修改的文件;
  uttime $new_ac_time,$new_cha_time, file;

        file一般glob'匹配属性'的方式来选择

总结

本节提供了关于文件和目录的一些处理函数,大部分的命令和类型与linux命令类似,也有助于理解,在处理文本文件时可以使用。


网站公告

今日签到

点亮在社区的每一天
去签到