PDA

View Full Version : Rinominare 900 files per data


Xemertix
17-02-2009, 10:19
Ciao,qualcuno potrebbe suggerirmi un semplice script bash che mi rinonimi sequenzialmente (1 a 1000 ad es) i file dal più vecchio (1) al più nuovo (1000)..
mi serve per rinominare + di 900 immagini bmp su cui poi usare l'ocr...
qualcosa del genere (non ne so nulla)
#!/bin/bash
mv $*.bmp `ls -1t`

grazie

Caldwell83
17-02-2009, 13:11
#!/bin/bash

NUMERO=1
for file in `ls -1t *.bmp`
do
mv $file ${NUMERO}_${file}
NUMERO=`expr $NUMERO + 1`
done

Risultato:


Prima:

File1.bmp
File2.bmp
File3.bmp

Dopo:

1_File1.bmp
2_File2.bmp
3_File3.bmp

Xemertix
17-02-2009, 14:18
Grazie,va abbastanza bene anche se mi ritrovo

1_File1493.bmp (più nuovo,ultima mod. sab 14 feb 2009 02:16:39 CET)
2_File1492.bmp
3_File1488.bmp
....
983_File6.bmp
984_File5.bmp
985_File1.bmp (più vecchio,ultima mod. sab 14 feb 2009 00:08:57 CET)

cioè dal più nuovo al vecchio,quindi l'inverso..forse riguarda ls -1t

ps.alcuni file come vedi (File 2,3,4 ad es.) non ci sono,ma ciò non dovrebbe influenzare la disposizione degli stessi,visto che si parla di tempi.

Caldwell83
17-02-2009, 14:21
Si, è colpa dell'ls
Cambia con "ls -1rt"
Per i file "mancanti" nessun probelma ;)

Xemertix
17-02-2009, 14:36
Si vero,grazie! un ultimissima cosa: se si volessero mettere gli zero avanti? (a causa di alcuni programmi stupidi..),tipo
001_File1.bmp
010_File10.bmp
100_File100.bmp

Potente questa bash e mi sembra anche abbastanza semplice comunque..sarebbe da imparare,se non ci volesse troppo tempo eheh
grazie ancora :)

Caldwell83
17-02-2009, 14:47
#!/bin/bash
padda()
{
awk 'END { printf( "%0'$2'd\n", "'$1'" ) }' /dev/null
}

NUMERO=1
for file in `ls -1rt *.bmp`
do
new_file=`padda ${NUMERO} 3`_${file}
mv $file ${new_file}
NUMERO=`expr $NUMERO + 1`
done


;)

Xemertix
17-02-2009, 14:54
Ok,fix'd...thanks :)