我应该遍历整个文件夹树并将所有内容(包括文件夹)重命名为小写。我环顾四周,发现最好的方法是使用 File::Find
。我测试了这段代码:
#!/usr/bin/perl -w
use File::Find;
use strict;
print "Folder: ";
chomp(my $dir = <STDIN>);
find(\&lowerCase, $dir);
sub lowerCase{
print $_," = ",lc($_),"\n";
rename $_, lc($_);
}
而且看起来效果很好。但是谁能告诉我这段代码是否会遇到麻烦?我记得关于我可能会因为在文件之前重命名文件夹或类似的事情而遇到麻烦的帖子。
最佳答案
如果您在 Windows 上,如评论所述,那么不,以任何顺序重命名文件或文件夹都不会出现问题,因为路径
DIR1/file1
与 Windows 中的dir1/file1
相同。不过,这在 Unix 上可能是个问题,在这种情况下,您最好手动执行递归 BFS。
此外,在执行重命名等系统调用时,始终检查结果:
rename($from, $to) || die "Error renaming $from to $to: $!";
如评论中所述,请注意将“ABC”重命名为“abc”。在 Windows 上这不是问题。
关于perl - 重命名 File::Find 文件夹遍历中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421526/