2016-04-04 27 views
0

Klasördeki tüm dosyalara ve tüm klasördeki tüm dosyalara önek eklemek istiyorum.Bir klasördeki ve klasördeki dosyaları yeniden adlandırma Çocuklar

Exemple:

 hello\file1 
hello2\file2 
file3 
file4
bunu yapmak çalıştı sonuç önek PRE_

 hello\PRE_file1 
hello2\PRE_file2 
PRE_file3 
PRE_file4

ekledikten sonra olmalıdır

:

find . -type f -exec rename 's/^/PRE_/' '{}' \;

ama tüm adını değiştirmek . İsterseniz herhangi bir ek modüllerin olmadan, sen de

+0

Unix işletim sistemlerinde hem iyi çalışıyor 'rename' komut Muhtemelen istediğin şey. –

+0

Olası yinelenen [Bir dizinde yinelemeli olarak dosya adını bul ve değiştir] (http://stackoverflow.com/questions/9393607/find-and-replace-filename-recursively-in-a-directory) –

+1

bulabilirsiniz. -type f -exec sh -c 'mv "$ 0" "$ (dirname" $ ​​0 ")/PRE _ $ (basename" $ ​​0 ")"' {} \; –

cevap

1

Eğer perl sadece kullanabilirsiniz ederiz:

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); 

Bu kod Windows (ActivePerl) ve Linux

İlgili konular