2009-06-11 7 views
0

J'ai quelques fichiers dans un dossier avec des noms comme abc_old.php maintenant je veux les renommer comme abc.php c'est que je veux supprimer ce "_old" de tous mes noms de fichiers.Comment Je fais ça en une fois ????renommer des fichiers dans un dossier

+1

Plus de ftp? Les fenêtres? Linux? – Blorgbeard

+0

Souhaitez-vous écrire une application ftp personnalisée? Ou utilisez-vous un client FTP existant? – Tony

+0

bien que j'ai linux et ftp à la fois me dire où c'est plus simple :-) – developer

Répondre

1

Les installations Shell seront limitées par FTP. Je copierais les fichiers dans un répertoire local. Dans bash (étant donné que dans ce qui précède vous prétendez avoir Linux disponible):

for filename in *_old.php 
do 
    mv $filename ${filename%_old.php}.php 
done 

L'opérateur% correspond à la fin de la chaîne et renvoie le nom de fichier de $ sans le segment adapté (le bit après%). D'où le ci-dessus coupe le _old.php et remplace alors un .php.

Je n'ai pas testé ce qui précède. Essayez-le d'abord sur un répertoire factice.

+0

n'est pas là où il peut être fait via ftp ou konsole/terminal ??????? – developer

+0

Quel shell utilisez-vous dans votre terminal? Vous trouverez probablement que c'est –

+0

thanxx un tonn man .................. votre code l'a fait en une seule fois :-) – developer

0

Ecrivez un programme qui boucle, analyse le nom de fichier, apporte les modifications souhaitées et renomme le fichier. Je ne suis pas au courant d'un moyen rapide de le faire. Vous trouverez probablement plus facile de copier les fichiers sur votre machine locale, d'exécuter le programme pour y changer le nom, puis de télécharger les fichiers nouvellement nommés sur le serveur FTP (et, évidemment, de supprimer les anciens)

1

Il y a longtemps, j'ai trouvé un petit extrait de code à la fin du livre Programming Perl 4 O'Reilly qui vous permet de renommer des fichiers en utilisant des expressions régulières. Je l'ai utilisé depuis. Pouvoir utiliser les expressions régulières Perl, en particulier tr et s, a rendu le changement de nom de fichier si facile. Alors coupez cela, collez-le dans un fichier appelé renommer sur votre chemin, faites-le "chmod ugo + x renommer" et gardez-le dans le cadre de votre arsenal d'outils habituel. Vérifiez où votre perl est avec "quel perl" et ajustez la première ligne de manière appropriée. Cela suppose que vous êtes sur un système Unix avec accès à Perl.

#!/usr/bin/perl 
# Usage: rename perlexpr [files] 

($op = shift) || die "Usage: rename perlexpr [filenames]\n"; 
if ([email protected]) 
{ 
    @ARGV = <STDIN>; 
    chop (@ARGV); 
} 
for (@ARGV) 
{ 
    $was = $_; 
    eval $op; 
    die [email protected] if [email protected]; 
    rename ($was,$_) unless $was eq $_; 
} 

Donc, pour votre exemple, vous pouvez faire

rename "s/_old//" *_old.php 

Oops. L'étiquette de cette question est ftp. Si votre accès est via ftp, cela ne fonctionnera pas, car vous n'aurez pas accès au shell.

Questions connexes