2012年6月14日星期四

Perl 修改目录,改变时间戳

建立和删除目录 
mkdir
 函数可以在一个已有的目录中建立一个目录。返回真时表示成功。 
mkdir "aaa",0755 or warn "cannot make aaa directory:$!";
第二个参数是新生成目录的权限位。以 0 开头,这个是一个八进制值。 

oct
 函数强制对一个字符串按八进制解释,不论前面有没有 0  

删除空目录,可用 rmdir 函数。 
rmdir glob "aa/*";  
 删除 aa/ 下所有空目录。 

rmdir
 操作符对非空目录操作会失败。所以要先用 unlink 删除文件,再删除目录。 

修改权限 
perl
 中有一个 chmod 函数,和 unix shell 中的 chmod 完成类似功能。 
chmod 0755, "aa","bb";
perl
 中不接受符号权限表达式方式,如 +x,go=u-w 等。 

改变所有者 
chown
 函数可以改变一组文件的所有者和属组。 
chown 1004,100,glob "*.o";
可用 getpwnam 把用户名翻译成一个数字,用 getgrnam 函数把组名翻译成一个数字。 

改变时间戳 
utime
 函数可修改文件的访问时间和修改时间。 
my $now = time;
my $ago = $now -24*60*60;  
 每天的秒数 
utime $now,$ago,glob "*";  
 把访问时间设为现在,修改时间设为一天以前 

第三个时间 ctime 的值在对文件做任何改变时,总被设为 " 现在 " ,因此没办法用 utime 函数来设置它。因为在你设置完后它会立即被重置为"现在",这是因为它的主要目的就是进行增量备份:如果文件的 ctime 比备份磁带上的日期要新,就说明又需要备份了。

没有评论: