2012-05-25 20 views
21

Ho più di 700 file in una cartella denominata come: file dal numero 1 al Number9 sono chiamati per il primo mese:Come rinominare i file usando R?

water_200101_01.img 
water_200101_09.img 

file da numero 10 a Numero 30 sono chiamati:

water_200101_10.img 
water_200101_30.img 

e così via per il secondo mese: file dal numero 1 al Number9 sono denominati:

water_200102_01.img 
water_200102_09.img 

file da insensibile er 10 al Numero 30 sono denominati:

water_200102_10.img 
water_200102_30.img 

Come posso rinominarli senza apportare alcuna modifica ai file. basta cambiare le nams, ad esempio

water_1 
water_2 
...till... 
water_700 
+0

Molto simile a http://stackoverflow.com/q/7864931/602276 – Andrie

risposta

31

file.rename sarà rinominare i file, e si può prendere un vettore di entrambi i nomi from e to.

Quindi qualcosa di simile:

file.rename(list.files(pattern="water_*.img"), paste0("water_", 1:700)) 

potrebbe funzionare.

Se ci si preoccupa specificamente dell'ordine, è possibile ordinare l'elenco di file attualmente esistenti oppure, se seguono uno schema particolare, creare direttamente il vettore di nomi di file (anche se noto che 700 non è un multiplo di 30).

Metterò da parte la domanda, "perché vorresti?" dal momento che sembra che tu stia buttando via le informazioni nel nome del file, ma presumibilmente anche le informazioni sono contenute altrove.

+4

È difficile leggere l'errore nei commenti. Sembra che 'dir2' contenga i nomi dei file da rinominare, quindi dovrebbe essere il primo argomento di' file.rename' (invece di un'altra chiamata 'list.files'). E ti manca una parentesi chiusa alla fine della chiamata 'list.files' all'interno di' file.rename' comunque. –

4

Ho scritto questo per me stesso. È veloce, consente la regex di trovare e sostituire e supporta le "corse di prova".

Se ci si trova su un Mac, è possibile utilizzare applescript per selezionare la cartella corrente nel Finder come cartella di destinazione.

Problemi correlati