#!/usr/bin/perl -w
# remd: changer les extentions aux fichiers
voulus.vers for System Unix/like par
# alain Adelmar| aadelmar@free.fr | Ven
09/03/2001 18:25:00 | Pessac Verthamon.
LABEL;
$i=0;
$pathroot;
$x = 'x=' x 30; #
pour faire joli
print "Bonjour, dans quel dossier voulez vous faire
des modifications\n";
chomp($resp_dir = <STDIN>);
while (! -e "$resp_dir") {
print
"affiner votre séléction, ce repertoire n'existe
pas\n";
@rootdir
= split(/\//, $resp_dir);
for
($rootdir[0]
.. $#rootdir) {
$pathroot = "$pathroot" . "$rootdir[$i]\/";
print "$i $pathroot\n";
if
($pathroot
== undef) {
$pathroot = $rootdir[$i-1];
print "Vous etes bon
jusqu'a $pathroot\n";
last LABEL;
}
$i++;
}
$pathroot = "\/" . "$pathroot";
print
"pathroot = $pathroot\n";
open DIR, "$pathroot" or die "Ouverture du
repertoire $resp_dir impossible $!";
@lsdir = readdir(DIR);
print
"Vous étes actuellement dans $pathroot\n";
foreach
$f(@lsdir) {
if
(-d
$f)
{
print "$f est un
repertoire\n";
}
else {
print "$f est un
fichier\n";
}
}
close
DIR or die "Fermeture impossible $!";
chomp($resp_dir = <STDIN>);
}
opendir DIR, "$resp_dir" or die "Ouverture du repertoire $resp_dir impossible $!";
foreach $file (sort readdir DIR) {
# $file = "$file\n";
print <STDOUT>, $file;
push
@lsdir,
$file;
}
# on aurai pu ecrire juste :
@lsdir
= readdir(DIR);
print "\n$x\nquelle extentions voulez vous modifier:\n";
chomp($extini = <STDIN>);
while (! &correcte($extini)) {
print
"veuillez entrer une extention correcte (3caracteres),
expl: txt\n";
chomp($extini = <STDIN>);
}
print "par quelle extention voulez vous la remplacer?\nnotez que vous aurez a
valider chaque chagement\n";
chomp($extvoulu = <STDIN>);
while (! &correcte($extvoulu)) {
print
"veuillez entrer une extention correcte, expl:
xxx\n";
chomp($extvoulu = <STDIN>);
}
# attention extention ne contient que 3 caract et non pas ".xxx"
(4)
foreach $file(@lsdir) {
chomp
$file;
next if $file=~ /^\.{1,2}/;
if ($file =~ /\.($extini)$/i) {
($fileroot, $ext) = split(/\./, $file);
$fileout = "$fileroot" . "\.$extvoulu";
print "modification de $file en $filout:
\[O\/N\]\n";
chomp($resp = <STDIN>);
next if ($resp =~ /^n/i);
# ici passer la commande
que vous désirez appliquer à ce fichier
print "$file va etre renomer en
$fileout\n";
rename($file, $fileout) or die "impossible de changer
les noms voir droit acces $!";
print "le fichier $file a
ete modifie en $fileout\n";
}
}
closedir DIR or die "Fermeture impossible $!";
sub correcte($ext) {
my ($ext)= @_;
if ($ext =~ /^\w{1,3}/) {
return 1;
}
else
{
return 0;
}
}
END;