使用Perl,如何重命名驱动器的所有子目录中的文件?

Use*_*611 4 recursion perl rename

如何使用Perl将.wma和.wmv扩展名的驱动器上的所有文件重命名为.txt扩展名,无论它们在目录结构中有多深?

Sin*_*nür 11

请参阅perldoc文件::查找.文档中的示例非常明确,可以帮助您完成大部分工作.尝试时,请使用更多信息更新问题.

如果这是一次学习练习,那么首先尝试做自己就会学得更好.

更新:

假设您有机会自己研究如何做到这一点,并考虑到已发布各种解决方案的事实,我发布了我将如何做到这一点.请注意,我会选择忽略诸如".wmv"之类的文件:我的正则表达式需要在点之前出现一些内容.

#!/usr/bin/perl

use strict;
use warnings;

use File::Find;

my ($dir) = @ARGV;

find( \&wanted, $dir );

sub wanted {
    return unless -f;
    return unless /^(.+)\.wm[av]$/i;
    my $new = "$1.txt";
    rename $_ => $new
        or warn "'$_' => '$new' failed: $!\n";
    return;
}

__END__
Run Code Online (Sandbox Code Playgroud)