在Perl中获取文件信息

您可以使用一系列统称为-X tests的测试运算符在Perl中非常快速地测试某些功能。例如,要对文件的各种权限进行快速测试,可以使用如下脚本:

#/usr/bin/perl
my $file = "/usr/test/file1.txt";
my (@description, $size);
if (-e $file) {
   push @description, 'binary' if (-B _);
   push @description, 'a socket' if (-S _);
   push @description, 'a text file' if (-T _);
   push @description, 'a block special file' if (-b _);
   push @description, 'a character special file' if (-c _);
   push @description, 'a directory' if (-d _);
   push @description, 'executable' if (-x _);
   push @description, (($size = -s _)) ? "$size bytes" : 'empty';
   print "$file is ", join(', ',@description),"\n";
}

这是功能列表,您可以检查文件或目录-

序号运算符和定义
1-
脚本开始时间减去文件上次访问时间(以天为单位)。
2-B
是二进制文件吗?
3-C
脚本开始时间减去文件的最后一个inode更改时间(以天为单位)。
4-M
脚本开始时间减去文件修改时间(以天为单位)。
5-O
文件由真实用户ID拥有吗?
6-R
该文件可以由真实用户ID或真实组读取吗?
7-S
文件是套接字吗?
8-T
是文本文件吗?
9-W
该文件可以由真实用户ID或真实组写入吗?
10-X
该文件可以由真实用户ID或真实组执行吗?
11-b
它是块特殊文件吗?
12-c
这是字符专用文件吗?
13-d
文件是目录吗?
14-e
文件是否存在?
15-f
它是纯文件吗?
16-g
文件是否设置了setgid位?
17-k
文件是否设置了粘性位?
18岁-l
文件是符号链接吗?
19-o
文件是否归有效用户标识所有?
20-p
文件是命名管道吗?
21-r
有效用户或组ID可以读取文件吗?
22-s
返回文件的大小,零大小=空文件。
23-t
文件句柄是否由TTY(终端)打开?
24-u
文件是否设置了setuid位?
25-w
该文件可以由有效的用户或组ID写入吗?
26-x
文件是否可以由有效的用户或组ID执行?
27-z
文件大小是否为零?