我想在文件夹中的所有文件和所有文件夹子项的所有文件中添加前缀。
例如:
hello\file1 hello2\file2 file3 file4
结果应该是在添加前缀PRE _
之后hello\PRE_file1 hello2\PRE_file2 PRE_file3 PRE_file4
我试图这样做:
find . -type f -exec rename 's/^/PRE_/' '{}' \;
但它会修改所有名称。 谢谢
答案 0 :(得分:1)
如果您愿意,也可以只使用perl,而无需任何其他模块:
use strict;
use warnings;
my ($prefix, $dir) = ('PRE_', '/home');
sub loop_dirs {
my $path = $_[0];
if (-d $path) { # if directory
opendir my $dh, $path or die "$!";
loop_dirs($path.'/'.$_) for grep ! /^\.{1,2}$/, readdir $dh; close $dh;
} elsif (-e $path) { # if file
prefix_add($path, $prefix); # do smth with file, e.g. rename
}
}
sub prefix_add { my ($path, $pref) = @_; $path =~ s/([^\/]+)$/$pref$1/; rename $_[0], $path }
loop_dirs($dir);
此代码适用于Windows(ActivePerl)和Linux