文件检测操作
如果程序会建立新的文件,在程序创建新文件之前,我们应先确定是否存在同名的文件,以免重要数据被覆盖掉。对于这种问题,我们可以使用– 选项,检测是否存在相同名字的文件:
die "Oops! A file called '$filename' already exists.\n"
if -e $filename;
如果文件在过去28 天内都未被修改,输出警告:
warn "Config file is looking pretty old!\n"
if -M CONFIG > 28;
下例首先检查文件列表,找到那些大于 100KB 的文件。如果一个文件仅是很大, 我们不一定会将其移到备份磁带上去,除非同时其在最近 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 |
索引节点修改时间(单位:天) |