my $dir = '你的目录'
opendir( DIRHANDLE, "$dir" ) or die "can not open dir"
my @allfile = readdir(DIRHANDLE)
closedir (DIRHANDLE)
2、改名字
foreach $old (@allfile){
rename("$dir/$old","$dir/$new")
}
第一是,perl文件的第一行要指定perl解释器的位置,典型的如下#!/usr/bin/perl
第二是,perl文件的权限要有可执行的权限,可通过右键->属性->权限,勾选来添加可执行权限(当然,你本身也应该有修改该文件权限的权限),也可以通过在命令行上执行chmod
+x
来添加执行权限。
可以用脚本实现批量文件名称修改,以perl脚本为例:注释:
1. # touch rename.perl//创建一个文件:rename.perl , 内容如下。
2. # chmod +x rename.perl
3. # cp rename.perl /bin/
4. # rename.perl 's/gongxu/leibie/g' *//将目录中所有文件名中的 gongxu 替换为 leibie。
#!/usr/bin/perl -w
# rename - Larry's filename fixer
#用法: Perl表达式 [要处理的文件名]
$op = shift or die "Usage: rename expr [files]\n"
#如果没有给出要处理的文件名则从标准输入读入
chomp(@ARGV = <STDIN>) unless @ARGV
for (@ARGV) {
$was = $_
eval $op#对待处理的文件名($_)执行用户输入的Perl表达式$op
die $@ if $@#退出 , 如果eval出错
rename($was,$_) unless $was eq $_
}
rename脚本的经典实例示范:
% rename.perl 's/\.orig$//' *.orig #移除文件末尾的.orig
% rename.perl "tr/A-Z/a-z/ unless /^Make/" * #所有非Make打头的文件名大写转为小写
% rename.perl '$_ .= ".bad"' *.f #每个*.f文件后面追加一个.bad
% rename.perl 'print "$_: "s/foo/bar/ if =~ /^y/i' * #回显每个待处理的文件名, 等待输入, 如果用户输入以y或Y打头, 把文件名中的foo替换成bar
% find /tmp -name "*~" -print | rename.perl 's/^(.+)~$/.#$1/' #把 /tmp目录里面每个文件名末尾有~的文件名改成以.#开头
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)