Domanda

Ho migliaia di file che devo rinominare con il seguente formato. 2008: 09: 18: 17: 45: 48-alfanumeric-alfanumeric.wav la prima parte è una data.

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

Desideri rinominarlo in:

20080918.174548.703.s.wav

Fondamentalmente per rimuovere ':' e per rendere un formato più leggibile dall'uomo e più facile da dividere.

So che rinominare è ciò che sto cercando, ma regex non funziona. Sto scrivendo:

  

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

È stato utile?

Soluzione

Devi considerare le molteplicità:

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

Altri suggerimenti

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

dovrebbe essere usato - nella tua versione abbini sempre solo una cifra. Inoltre, non è necessario sfuggire a:.

Se questo è qualcosa che farai solo una volta, lo farei in questo modo:

1) ls i file in un nuovo file: ls datadir > MioTmp 2) modifica mytmp con il tuo editor preferito.   2a eliminare tutte le righe che non sono file di dati che ti interessano, come & Quot;. & Quot; e " .. "   2b modifica ogni riga in un comando shell per rinominare il file. Mi piacciono gli emacs e      costruirebbe una macro di tastiera per: tagliare il nome del file, inserire " mv " ;, inserire il      nome file, inserire spazio, inserire nuovamente il nome file, modificare il nome file inserito in      il formato desiderato.   2c salva 3) eseguire sh & Lt; MioTmp

Fatto! Non elegante, noioso se il tuo editor non supporta le macro o funzionalità simili, ma è garantito che funzioni e git-er-done.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top