在 Perl 中获取文件信息
您可以使用一系列统称为 **-X 测试** 的测试运算符在 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 | -A 脚本开始时间减去文件上次访问时间(以天为单位)。 |
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 该文件是否由有效用户 ID 拥有? |
20 | -p 该文件是否为命名管道? |
21 | -r 该文件是否可由有效用户或组 ID 读取? |
22 | -s 返回文件的大小,零大小 = 空文件。 |
23 | -t 文件句柄是否由 TTY(终端)打开? |
24 | -u 该文件是否设置了 setuid 位? |
25 | -w 该文件是否可由有效用户或组 ID 写入? |
26 | -x 该文件是否可由有效用户或组 ID 执行? |
27 | -z 文件大小是否为零? |
广告