[Risolto]Rinomina file con inversione

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
UgoBollito
Prode Principiante
Messaggi: 98
Iscrizione: mercoledì 26 gennaio 2022, 13:15
Desktop: Gnome
Distribuzione: 20.04
Sesso: Maschile

[Risolto]Rinomina file con inversione

Messaggio da UgoBollito »

Ho diversi file (centinaia di buste paghe) in una cartella così nominati: cognome_nome_mese_anno.pdf (es.: Rossi_Mario_05_2022.pdf).
Con questa notazione i file sono disordinati. Dovrei invertire anno e mese, cioè mettere l'anno prima del mese.
Voi saprete sicuramente come fare :p
Ultima modifica di UgoBollito il martedì 10 maggio 2022, 16:08, modificato 1 volta in totale.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Rinomina file con inversione

Messaggio da UbuNuovo »

Per fare una simulazione:
Apri un terminale nella directory contenente i file ed esegui:

Codice: Seleziona tutto

rename -n 's/(\d\d)_(\d{4}).pdf/$2_$1.pdf/' *.pdf
Controlli nella simulazione; se i nomi dei file vanno bene puoi eseguire il comando senza '-n'

Codice: Seleziona tutto

rename 's/(\d\d)_(\d{4}).pdf/$2_$1.pdf/' *.pdf
Ultima modifica di UbuNuovo il lunedì 9 maggio 2022, 22:20, modificato 1 volta in totale.
Salva l'Ucraina! 🇺🇦
UgoBollito
Prode Principiante
Messaggi: 98
Iscrizione: mercoledì 26 gennaio 2022, 13:15
Desktop: Gnome
Distribuzione: 20.04
Sesso: Maschile

Re: Rinomina file con inversione

Messaggio da UgoBollito »

Grazie. Primo, mi ha fatto installare 'rename'.
Poi il comando non da nessun risultato. Ho copiato 5 file in una cartella e lì, dato il secondo comando, ma dopo un paio di minuti il processo era ancora in esecuzione senza risultati
UgoBollito
Prode Principiante
Messaggi: 98
Iscrizione: mercoledì 26 gennaio 2022, 13:15
Desktop: Gnome
Distribuzione: 20.04
Sesso: Maschile

Re: Rinomina file con inversione

Messaggio da UgoBollito »

No scusa, scusa... Il secondo com. funziona . Il primo no... Grazie mille
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Rinomina file con inversione

Messaggio da UbuNuovo »

Hai ragione! Ho dimenticato '*.pdf'
Lo correggo.
Salva l'Ucraina! 🇺🇦
Avatar utente
wilecoyote
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 15387
Iscrizione: giovedì 20 agosto 2009, 16:21
Desktop: Kubuntu et alii
Distribuzione: 9.04 32bit 14/18/20/22.04 LTS 64bit
Sesso: Maschile
Località: Ceranesi - Ge

Re: [Risolto]Rinomina file con inversione

Messaggio da wilecoyote »

) Salve, @UbuNuovo quando posti un comando dovresti metterci insieme 1 straccio di spiegazione, così chi legge può imparare qualcosa.

:: Ciao
ACER Extensa 5230E 2,2 Ghz cpu Celeron 900 hdd 160 GB Ram 1 GB scheda video Intel GM500
ACER Extensa 5635Z 2,2 Ghz cpu Celeron T3100 hdd 320 GB Ram 4 GB scheda video Intel Mobile 4
Quando una Finestra chiusa incontra un Pinguino la Finestra chiusa è una Finestra aperta.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto]Rinomina file con inversione

Messaggio da UbuNuovo »

Ci provo.
Il comando rename (di Ubuntu) mostrato, utilizza la sintassi di sed per la sostituzione, ma in più supporta le regex Perl.
Per la sostituzione si usa la sintassi s///, cioè:
s/regex_che_individua_i_caratteri_da_elaborare/sostituzioni_desiderate/
\d rappresenta un carattere numerico quindi...
\d\d rappresenta due caratteri numerici consecutivi,
\d{4} rappresenta quattro ripetizioni ({4}) di \d, quindi quattro caratteri numerici consecutivi.
Con le parentesi tonde delimito i due gruppi;
il primo gruppo (\d\d) viene rappresentato da $1 nella parte della sostituzione
il secondo gruppo (\d{4}) viene rappresentato da $2 nella parte della sostituzione
.pdf all'interno dell'espressione, non è necessario, l'ho messo per maggiore sicurezza, cioè per fare in modo che le sequenze numeriche siano presenti subito prima dell'estensione.
Anzi, nella regex, andrebbe fatto l'escape del punto :

Codice: Seleziona tutto

rename -n 's/(\d\d)_(\d{4})\.pdf/$2_$1.pdf/' *.pdf
*.pdf serve per dare in pasto a rename tutti i file pdf presenti nella directory di esecuzione.

Spero di essere stato abbastanza chiaro, altrimenti documentarsi su sed e Perl regex.
Salva l'Ucraina! 🇺🇦
Avatar utente
wilecoyote
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 15387
Iscrizione: giovedì 20 agosto 2009, 16:21
Desktop: Kubuntu et alii
Distribuzione: 9.04 32bit 14/18/20/22.04 LTS 64bit
Sesso: Maschile
Località: Ceranesi - Ge

Re: [Risolto]Rinomina file con inversione

Messaggio da wilecoyote »

) Salve, perfetto.

:: Ciao
ACER Extensa 5230E 2,2 Ghz cpu Celeron 900 hdd 160 GB Ram 1 GB scheda video Intel GM500
ACER Extensa 5635Z 2,2 Ghz cpu Celeron T3100 hdd 320 GB Ram 4 GB scheda video Intel Mobile 4
Quando una Finestra chiusa incontra un Pinguino la Finestra chiusa è una Finestra aperta.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 15 ospiti