第十三章 目录操作
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" ;
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" ;