Question

J'ai des milliers de fichiers que je dois renommer au format suivant. 2008: 09: 18: 17: 45: 48-alfanumeric-alfanumeric.wav la première partie est une date.

Ex. 2008: 09: 18: 17: 45: 48-703-s.wav

Un souhait de le renommer en:

20080918.174548.703.s.wav

Essentiellement, supprimez le ':' et créez un format plus lisible par l'homme et plus facile à séparer.

Je sais que renommer est ce que je cherche, mais la regex ne fonctionne pas. Je tape:

  

renommer   '/ \ d): (\ d): (\ d): (\ d): (\ d): (\ d) - (.?) - (.?). wav / $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $. 7 $. $ 8.wav / '   ./*

Était-ce utile?

La solution

Vous devez prendre en compte les multiplicités:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

Autres conseils

rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

doit être utilisé - dans votre version, vous ne correspondez jamais qu’à un chiffre. De plus, pas besoin d’échapper au:

Si c'est quelque chose que vous ne ferez qu'une fois, je le ferais de cette façon:

1) Les fichiers dans un nouveau fichier: ls datadir > mytmp 2) éditez le mytmp avec votre éditeur préféré.   2a supprimez toutes les lignes qui ne sont pas des fichiers de données qui vous tiennent à coeur, comme & Quot;. & Quot; et " .. "   2b éditez chaque ligne dans une commande shell pour renommer le fichier. J'aime emacs et      créerait une macro de clavier pour: couper le nom du fichier, insérer & "; mv &"; insérer le      nom de fichier, insérez de l'espace, insérez à nouveau le nom de fichier, modifiez le nom de fichier inséré dans      le format souhaité.   2c sauvegarder 3) lancer sh & Lt; mytmp

Fait! Pas élégant, fastidieux si votre éditeur ne supporte pas les macros ou des fonctionnalités similaires, mais garantit son fonctionnement et sa git-er-done.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top