| ||
#1
chdir /home/...
切换执行目录
#2
文件名通配,启动目录下有多个文件需要查找指定文件列表
my @all_files = glob '*.pm'; ####查找以 .pm 结尾的文件列表;默认不匹配 . 开头的文件
#3
my $dir='/etc'; my @dir_files=<$dir/* $dir/.*>; ####匹配所有文件包括以 . 开头的文件
注:::带 '/' 为文件通配操作,不带 '/' 为文件句柄操作 如 :::
my @file=<file1> #####读取文件 file1 的内容;
#4
使用目录句柄从目录中取得文件名列表,获取的列表为该目录下所有文件,包括 . 和 .. 文件,需要自己额外处理
my $dir_to_process ='/etc'; opendir my $files_name, $dir_to_process or die "cannot open $dir_to_process :$!"; foreach $file (readdir $files_name){print $file; } closedir $files_name;
#额外的处理,只处理 .pm 结尾的文件
while($file=readdir $files_name){ next unless $name=~/\.pm$/; }
#排除掉 . 和 .. 文件
while($file=readdir $files_name){ next if $file eq '.' or $file eq '..'; }
###拼合文件路径和文件名,对文件的处理需要具体的文件路径和文件名,查找到的文件名没有路径,后续处理未加上路径会在当前路径中查找文件名
处理前需要
$file="$dir_to_process/$file";
或者使用File相关的模块
use File::Spec::Functions; $file=catfile($dir_to_process,$file);
###################################
#5删除文件 unlink @file_list ###返回值为删除的文件数目,无法知道哪些被删除,哪些没有被删除
unlink 'state','bedrock','lava'; unlink qw(state bedrock lava);
##使用通配符删除指定类型文件 glob
unlink glob '*.pm';
##一个个的删除,删除成功返回1,失败返回0
foreach my $file (qw/file1 file2 file3/){ unlink $file or warn "failed on $file :$! \n"; }
#6重命名文件
rename 'oldfile' , 'new file';
文件迁移
rename 'home/dir1/file1' , 'file1'; rename 'home/dir1/file1' => 'file1';
批量rename做法::将.old结尾的文件替换为.new ####
foreach my $file (glob '*.old'){ my $new_file=file; $new_file=s/\.old$/.new/; if(-e $new_file){ warn "The $file to $new_file failed :: exists\n"; }elsif(rename $file => $new_file){ next; }else{ warn "rename $file to $new_file failed :$!\n"; } }
#7创建和删除目录mkdir dirname permission
my $dir_name='dir'; mkdir $dir_name ,0755 or warn "cannot make $dir_name :$!\n";
#从命令行读取permission参数
my ($name ,$perm)=@ARGV; mkdir $name ,oct($perm) or die "cannot create $name :$!";
#移除空目录 rmdir
foreach $dir (qw/dir1 dir2 dir3 dir4/){ rmdir $dir or warn "cannot rmdir $dir :$!\n"; }
#移除非空目录::先删除目录内容
foreach $file (glob '$dir/* $dir/.*'){ unlink $file or warn "cannot unlink $file :$!\n"; } rmdir $dir or warn "cannot rmdir $dir :$!\n";
#8修改文件或目录权限::返回修改成功的条目数量
chmod 0755 , 'file1','file2';
#8 修改隶属关系
define(my $user =getpwnam 'username') or die "bad user name\n"; define(my $group= getgrnam 'groupname') or die "bad group name\n"; chown $user ,$group ,@files_list;
#9对文件内容相关操作