文件测试

文件测试

1. 文件测试操作符

perl提供了一组用于测试文件的操作符,借此可以返回特定的文件信息。

  • 通常使用 -x的形式调用,其中x值得时特定的测试操作,如-w -r等。
  • 通过特定的文件测试符,可以让我们的程序变得更加智能。
  • 使用格式: -r $filename (连字符+测试场景 文件名称或文件句柄)
  • 默认检查$_,但是-t 的默认值是STDIN
#!/usr/bin/perl
#使用-e判断文件是否存在
#如果文件存在,调用die函数结束程序,这样可以保证已存在的文件不会被覆盖
die "Oops! A file call '$filename' already exists.\n"
	if -e $filename;
#测试某个文件是否保持更新
#这里的-M返回的是文件最后一次修改时间到让当前程序启动时刻之间的天数
warn "Config file is looking pretty old.\n"
	if -M CONFIG > 20;
#如果我们希望查找文件大于100k,并且超过90天未访问的文件
my @original_files = qw/fred betty barney wilma pebbles dino/;
my @big_old_files;
foreach my $filename (@original_files) {
   
	push @big_old_files,$filename
		if -s $filename > 100_000 and -A $filename > 90;  # -s 返回的是以字节计算的文件大小
}

表1.1 文件测试操作符及其意义

文件测试符 意义
-r 文件或目录,对目前(有效的)用户或组来说是可读的
-w 文件或目录,对目前(有效的)用户或组来说是可写的
-x 文件或目录,对目前(有效的)用户或组来说是可执行的
-o 文件或目录,由目前(有效的)用户拥有
-R 文件或目录,对实际的用户或组来说是可读的
-W 文件或目录,对实际的用户或组来说是可写的
-X 文件或目录,对实际的用户或组来说是可执行的
-O 文件或目录,由实际的用户拥有
-e 文件或目录,是存在的
-z 文件或目录存在而且没有内容(对目录来说永远是假)
-s 文件或目录存在并且有内容(返回值是以字节为单位的文件大小)
-f 是否为普通文件
-d 是否为目录文件
-l 是否为符号链接
-S 是否为socket类型的文件
-p 是否为命名管道,即FIFO队列
-b 是否为块设备(比如某个挂载的网盘)
-c 是否为字符设备文件(比如某个IO设备)
-u 文件和目录设置了setuid位
-g 文件和目录设置了setgid位
-k 文件和目录设置了setcky位
-t 文件句柄是TTY设备
-T 看起来像是文本文件
-B 看起来像是二进制文件
-M 最后一次修改至今的天数
-A 最后一次访问至今的天数
-C 最有一次文件节点编号变更至今的天数

注:

  1. 如无特殊声明,返回的都是布尔真/假值;
  2. -r -w -x -o需要查看用户ID,看他们是否具有相应的文件权限;
  3. 有效用户:负责运行这个程序的人。

1.1 同一文件的多个属性测试

如果要一次性测试一个文件的多个属性,可以将个

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值