Renommer un tas de fichiers dans debian
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 / ' ./*
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.