2009-10-27 8 views
0

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

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

A à renommer à:

20080918.174548.703.s.wav

Fondamentalement pour enlever le ':' et de faire un format plus humain lisible et plus facile à diviser.

Je sais que renommer est ce que je cherche mais l'expression régulière ne fonctionne pas. Je tape:

renommage « s/(\ d): (\ d): (\ d): (\ d): (\ d): - (.?) (\ D) - wav/1 $ 2 $ 3 $ 4 $ 5 $ 6. 7. $ 8.wav $/» ./*

Répondre

1

Vous devez considérer multiplicités:

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

devrait (.?). être utilisé - dans votre version, vous ne correspondez toujours qu'à un chiffre. De plus, pas besoin d'échapper à:.

1

Si cela est quelque chose que vous allez seulement faire une fois, je le ferais de cette façon:

1) ls les fichiers dans un nouveau fichier: ls répertoire_data> MonTmp 2) modifier le MonTmp avec votre éditeur préféré. 2a supprime toutes les lignes qui ne sont pas des fichiers de données qui vous intéressent, comme "." et ".." 2b éditez chaque ligne dans une commande shell pour renommer le fichier. J'aime emacs, et construirait une macro clavier pour: couper le nom du fichier, insérer "mv", insérer le nom de fichier, insérer l'espace, insérer à nouveau le nom de fichier, modifier le nom de fichier inséré en le format désiré. 2c sauvegarder 3) exécuter sh < mytmp

Terminé! Pas élégant, fastidieux si votre éditeur ne supporte pas les macros ou des fonctionnalités similaires, mais garanti pour fonctionner et git-er-done.

Questions connexes