第十三章 目录操作 1. chdir 函数用来改变工作目录;每次目录更改后都应检查错误标量$!; chdir "/etc" or die " Can not chdir /etc:$!\n"; 2. glob文件名模式匹配 my @files = glob "/etc/*.pm /etc/*.pl"; #匹配多种模式用空格隔开 <>文件名模式匹配 my @files = <$dir/* $dir/.pm> #匹配多种模式用空格隔开 3. 目录句柄 opendir DIR,"/etc" or die "opendir /etc Failed:$!\n"; #打开目录句柄 readdir DIR; #从目录中读取文件名列表,包含所有文件(包括点号开头的),不包含路径名称 while ($name = readdir DIR) { next unless $name =~ /\.pm$/; } closedir DIR; 递归目录列表用File::Find模块 4. 删除文件 unlink "/etc/aaa","/etc/bbb","/etc/ccc"; unlink glob "/etc/*.pm" 5. 文件重命名 rename "old","new"; 6. 链接文件 link创建一个硬链接: link "old","new"; symlink 创建一个符号链接:sysmlink "old","new"; readlink "new"; 获取链接文件的实际位置 7. 目录操作 mkdir "$filedir"; #权限则默认设为0777; mkdir "$filedir",0755; #或者oct($mask),权限必须为8进制数,字符串也不行 rmdir $filedir; #删除空目录 /tmp/file_$$ # $$代表当前进程号 File::Path模块提供了更高级的目录操作 8. 修改文件权限与隶属关系 chmod 0755,"fred","barney"; #返回值为修改文件的数量 $uid = getpwnam("user"); #将用户名翻译为数字 $gid = getgrname("group"); #将组名翻译为数字 chown $uid,$gid,@filenames;更改文件的拥有者及其所属的组,文件可以是列表 9. 修改时间戳 utime前两个参数是新的访问时间和新的修改时间,后面的参数是文件名列表; utime $now,$ago,glob "*.pm" ;