发新话题
打印

[求助] 如何用perl获取某个路径下的所有文件名?( 此文章被查看:401次,被回复:4篇!! )

如何用perl获取某个路径下的所有文件名?

如题,请大家指教!谢谢



© 本文为 janelisbabySCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

#打开C盘根目录下的a目录,并输出a目录下所有文件名称,包含 . ..
my $dir = "c:/a";
opendir DH, $dir or die "Cannot open $dir: $!";
foreach $file (readdir DH) {
  print "one file in $dir is $file\n";
}
closedir DH;



© 本文为 somisSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

恩,谢谢,请问如何批量修改CC中某个目录下的文件名呢,如把大写转化为小写?



© 本文为 janelisbabySCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

下面的脚本只是简单实现了功能而已,没有做任何优化和改进。

#!/usr/bin/perl
my $dir = "C:/a";


#获得一个目录下所有的文件列表,尚未排除其他子目录,需修改
opendir(DH, $dir)  or die "Couldn't open $dir for reading: $!";
@files = ();
print "start\n";
while( defined ($file = readdir(DH)) ) {
    next if $file =~ /^\.\.?$/;     # skip . and ..
    my $filename = "$dir/$file";
    print "$filename\n";
    push(@files, $filename);
}
closedir(DH);

#批量更改文件名称为小写,在windows系统因为大小写都认为是同一个文件,因此注释了判断
#是否已经存在新文件名的可能。实际上有可能覆盖原有的文件!需要仔细考虑
my $newfile;
foreach(@files){
  $newfile = $_;
  for ($newfile) { tr/A-Z/a-z/ } #更改文件名称字符串为小写
  #if (-e $newfile) {
  #  warn "can't rename $_ to $newfile: $newfile exists\n";
  #} els
  if (rename $_, $newfile) {
    ## success, do nothing
  } else {
    warn "rename $_ to $newfile failed: $!\n";
  }
}

[ 本帖最后由 somis 于 2008-4-15 22:28 编辑 ]

© 本文为 somis 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

太谢谢了,我昨天写的程序运行结果是换成小写了,但实际文件夹中的文件还是没有改过来。

© 本文为 janelisbaby 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题