3 votes

Comment renommer par lot des fichiers copiés de OSX vers Windows avec ':' dans les noms de fichiers ?

C'est vraiment déroutant. J'ai beaucoup de vidéos qui ont été stockées sous Mac OS, et maintenant je dois les éditer sous Windows XP. J'ai copié les fichiers à l'aide de HFSExplorer. Le logiciel de montage refuse d'ouvrir les fichiers avec leur nom actuel et, jusqu'à présent, je n'ai pas trouvé de moyen de renommer tous les fichiers par lots.

Les noms des fichiers ressemblent à ceci :

clip-2009-10-01 21;26;00.mov

Mais je soupçonne que dans OSX le temps était 21:26:00.

Je voudrais remplacer l'espace par un trait de soulignement, et les points-virgules par des tirets.

J'ai essayé plusieurs applications de renommage en masse, avec ; et :, mais en vain. J'ai également essayé rename.pl, mais également en vain.

4voto

user12786 Points 454

Mise à jour de :

Nous supposons que "clip-2009-10-01 21;26;00.mov" n'est pas le nom de fichier réel ; une possibilité est que le nom de fichier réel soit "clip-2009-10-01 21:26:00.mov". Cependant, nous ne pouvons pas le vérifier sous Windows.

Nous n'en aurons peut-être pas besoin.


Méthode à sécurité intégrée :

Démarrez sur un LiveCD Linux. Ubuntu 9.04 a un bon support NTFS, et Linux gère beaucoup plus de caractères bancals dans les noms de fichiers que Windows. La commande perl rename script peut être incluse comme commande rename du système.


Cela pourrait En fait, -Méthode de travail par lots (Nouveau script !)

La commande DOS DIR/X affiche les noms de fichiers courts, s'ils existent sur votre système .

$ cmd
c:\test> dir /x
 Volume in drive E is NUVOL
 Volume Serial Number is 80D3-A96D

 Directory of e:\tor\test

10/04/2009  05:15 AM    <DIR>                       .
10/04/2009  05:15 AM    <DIR>                       ..
10/04/2009  05:11 AM                 0 CLIP-2~1.MOV clip-2009-10-01 21;26;00.mov
               1 File(s)              0 bytes
               2 Dir(s)   5,201,670,144 bytes free

S'ils existent, la commande REN les déplace vers un nouveau nom ; le nouveau nom peut être un nouveau nom de fichier long (valide).

c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov"

C'est comme ça qu'on en répare un.

Pour les traiter tous par lots, vous devez 1) saisir une liste de tous les fichiers que vous voulez déplacer ; 2) exécuter un court script perl pour convertir votre liste en un fichier batch avec les commandes REN appropriées ; et 3) exécuter le script batch résultant.

c:\test> dir /x > mybrokenfiles.lst  
$ cat mybrokenfiles.lst | perl -lne 'next if not /MOV/; s/^.{1,39}//; s/^/ren /; s/ (\d\d);(\d\d);(\d\d)/_$1-$2-$3/; print' > fixmybrokenfiles.bat  
c:\test> fixmybrokenfiles.bat  

La ligne de commande perl suppose un format d'entrée très particulier, donc si le listing DOS montre des noms de fichiers longs dans un format autre que "21;26;00.mov", il ne fera probablement pas exactement ce que vous voulez. Si vous l'essayez, vérifiez que le lot script a l'air correct avant de l'exécuter.

Si vous êtes à l'aise avec perl (ou sed/awk, Python, peu importe), vous pouvez script ceci vous-même. Mais si DIR/X n'affiche pas les noms de fichiers courts, c'est que votre système les a désactivés, et cette solution ne vous aidera pas.


Réponse originale Il n'est pas utile avec ce que nous savons maintenant, mais si vous copiez à nouveau ce genre de fichier à partir d'OSX, vous pouvez l'utiliser AVANT la copie comme mesure préventive.

J'utilise beaucoup la ligne de commande sur les systèmes Windows et Linux. Il y a un script pratique en perl flottant sur l'internet qui permet de renommer des fichiers par lot en utilisant des regex standards en perl (google pour rename.pl pour le trouver).

Sous Cygwin sous Windows, utilisez cette option dans le répertoire où se trouvent vos fichiers pour les renommer :

$ ls
clip-2009-10-01 21;26;00.mov

$ rename.pl 'tr/ ;/_-/;' * 
$ ls
clip-2009-10-01_21-26-00.mov

Je suis presque sûr que ma version provient de la Livre de recettes Perl :

#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

2voto

Dalroth Points 2468

Vérifiez Renommer le maître il offre une myriade de moyens de manipuler les noms de fichiers par lots. Vous pouvez consulter le remplacer onglet.

alt text

Rename Master est un logiciel gratuit.

1voto

harrymc Points 394411

Renommer Lupas est un programme GRATUIT développé pour renommer un grand nombre de fichiers. Il fonctionne sur Win95, Win98, WinME, WinNT, Win2K et WinXP. C'est un simple fichier .EXE et il n'a pas besoin d'autres bibliothèques externes.

Voici quelques-unes de ses caractéristiques :

  • Renommer des fichiers et des dossiers
  • Renommer les fichiers dans les sous-répertoires récursifs
  • Shell (clic droit sur un dossier dans l'explorateur pour lancer LupasRename sur ce dossier)
  • Aperçu instantané (facultatif)
  • Annuler la dernière opération de renommage
  • Créer un fichier Batch pour renommer à partir d'une console DOS
  • Créez un fichier batch pour l'opération UNDO à partir d'une console DOS.
  • Enregistrer et charger vos options dans un fichier INI
  • Filtrez par n'importe quel masque : .mp3 ; .mp2 ou ???a*.txt...
  • Remplacer une sous-chaîne par une autre avec l'option "Matchcase".
  • Remplacer une sous-chaîne par une autre avec l'option "Matchcase" dans Extension

alt text

1voto

Gao Wei Points 11

Il suffit de faire ça en mac ou linux. Cela renommera tous les fichiers et dossiers avec un : en un -.

find . -depth -exec rename 's/:/-/g' * {}\;

0voto

Atif Aziz Points 16967

Total commandant comprend un outil de renommage par lots appelé Multi-Rename Tool (le raccourci par défaut est Ctrl+M).

Dans votre cas, vous pouvez renommer les fichiers en exécutant le processus deux fois, une fois pour remplacer l'espace et une fois pour remplacer le point-virgule.

L'autre moyen consiste à utiliser le masque de renommage - sélectionnez la plage avant l'espace, ajoutez le trait de soulignement, puis la plage après l'espace, tout en remplaçant le point-virgule par le tiret à l'aide de la fonction Rechercher et remplacer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X