Merci pour ta réponse
Oui en effet j'ai pas mis tout le code juste la chaine a remplacer et la chaine sensément remplacée.
Le script en entier:
Code :
- find ./ -print | tac | /usr/bin/myrename.pl '($file) = (m|.+/(.+)|); $file = $_ if (!defined($file));($newfile = $file) =~ s/ /_/g; s/$file/$newfile/;'
|
et le script myrename:
Code :
- #!/usr/local/bin/perl
- #
- # Usage: rename perlexpr [files]
- ($regexp = shift @ARGV) || die "Usage: rename perlexpr [filenames]\n";
- if (!@ARGV) {
- @ARGV = <STDIN>;
- chomp(@ARGV);
- }
- foreach $_ (@ARGV) {
- $old_name = $_;
- eval $regexp;
- die $@ if $@;
- rename($old_name, $_) unless $old_name eq $_;
- }
- exit(0);
|
(tout ça pour renommer récursivement snif)
avec
Code :
- find ./ -print | tac | /usr/bin/myrename.pl '($file) = (m|.+/(.+)|); $file = $_ if (!defined($file));($newfile = $file) =~ s/ /_/g; s/(.+)/$newfile/;'
|
$newfile replace bien toute la chaine précédente mais du coup je perd le répertoire et il me renome tout dans le répertoire courant
(par exemple
toto/tata/titi espace.txt
devient
titi_expace.txt
au lieu de
toto/tata/titi_espace.txt
)
ca m'énerve de pas comprend les regexp !
Merci!