[RISOLTO] Bash script e rinomina interattiva sequenza file

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

[RISOLTO] Bash script e rinomina interattiva sequenza file

Messaggio da Burroughs »

Salve a tutti, ragazzi, volevo chiedervi una mano su come impostare un bash script, per cui passo subito a spiegarvi lo scenario.
Vivendo all'estero, registro ogni sera con uno script una nota trasmissione RAI utilizzando lo stream ufficiale (in questo caso di Rai3), che ho trovato poco tempo fa e che mi sembra di buona qualità.
Alla fine della registrazione, ottengo un file con questa struttura: posto-$(date +"%d-%m-%Y-%H-%M").ts.
Poco dopo, vado sul file e lo rinomino a manina leggermente in questo modo: 1- $(date +"%d-%m-%Y-%H-%M").ts.
Dato che mi scoccia fare 'sta menata ogni sera mi piacerebbe implementare, tramite script e relativo cronjob, una procedura che analizza il nome del file (ricordate, posto-$(date +"%d-%m-%Y-%H-%M").ts) e lo rinomina in 1- $(date +"%d-%m-%Y-%H-%M").ts o 5- $(date +"%d-%m-%Y-%H-%M").ts, se ce ne sono altri prima, in base a quanto trova all'interno della directory di riferimento.
Alla fine vorrei avere una situazione tipo:

Codice: Seleziona tutto

1- $(date +"%d-%m-%Y-%H-%M").ts
2- $(date +"%d-%m-%Y-%H-%M").ts
3- $(date +"%d-%m-%Y-%H-%M").ts
Mi date qualche indicazione???
Ultima modifica di Burroughs il mer 22 lug 2020, 22:19, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Bash script e rinomina interattiva sequenza file

Messaggio da joe »

Ma se i files vengono creati solo uno ogni sera, non significa che la data nel nome non è mail uguale?
Anzi mi correggo, siccome c'è anche l'ora e il minuto dal comando date che riporti, direi che non avrai mai due files omonimi.
A quel punto sarebbe di gran lunga più facile semplicemente eliminare dal nome il prefisso "posto-", non c'è bisogno di numerarli. O no?

Casomai se vuoi disporli in ordine cronologico attraverso il nome esplicatico del file, potresti tranquillamente nominarli come:

anno-mese-giorno-ora-minuto.ts

Questo se il file lo nomini tu quando lo scarichi, non so che script usi per lo scopo, se funzionasse il download con wget:

Codice: Seleziona tutto

wget -O $(date +"%Y-%m-%d-%H-%M").ts 'http://link'
Ad ogni modo, tornando alla richiesta pedissequa:

Codice: Seleziona tutto

$ cat ren.sh
#!/bin/bash
num=$(find . -regex '^\./[0-9]*-.*'|sed 's/^\.\///'|sort|tail -n1|cut -d- -f1)
newnum=$(($num+1))
name=$(find . -iname "posto-*"|sed 's/^\.\/posto//')
mv posto$name $newnum$name

Codice: Seleziona tutto

$ ls -1
1-pippo
2-paperino
32-topolino
39-topolina
posto-quiquoqua
ren.sh

Codice: Seleziona tutto

$ ./ren.sh
$ ls -1
1-pippo
2-paperino
32-topolino
39-topolina
40-quiquoqua
ren.sh

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [RISOLTO] Bash script e rinomina interattiva sequenza file

Messaggio da Burroughs »

Grazie, Joe, il tuo script ha funzionato a meraviglia!
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: [RISOLTO] Bash script e rinomina interattiva sequenza file

Messaggio da joe »

:thumbright:

Rispondi