Script complesso per rinominare grandi quantità di file
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Script complesso per rinominare grandi quantità di file
Che broccolo! Ho capito! ls fa il controllo sui file reali.
Salva l'Ucraina! 
-
King84
Re: Script complesso per rinominare grandi quantità di file
Sono passati ormai 11 mesi da quando ho scritto questo thread.
Ancora non ho trovato una soluzione e ogni giorno sto facendo prove su prove per riuscire a risolvere il problema di questo script.
Se qualcuno ha idea di come aiutarmi, gli sarò grato per sempre.
Ancora non ho trovato una soluzione e ogni giorno sto facendo prove su prove per riuscire a risolvere il problema di questo script.
Se qualcuno ha idea di come aiutarmi, gli sarò grato per sempre.
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Script complesso per rinominare grandi quantità di file
Se non guardi cosa ti viene scritto!
Questo funziona http://forum.ubuntu-it.org/viewtopic.php?f=33&t=528225&start=20#p4331037
L'unica cosa è che non si può fare la verifica con l'echo perché i file devono essere rinominati realmente per avere la giusta esecuzione dello script.
Semmai prima provalo su una copia dei file.
Ciao
Questo funziona http://forum.ubuntu-it.org/viewtopic.php?f=33&t=528225&start=20#p4331037
L'unica cosa è che non si può fare la verifica con l'echo perché i file devono essere rinominati realmente per avere la giusta esecuzione dello script.
Semmai prima provalo su una copia dei file.
Ciao
Salva l'Ucraina! 
- vaeVictis
- Imperturbabile Insigne

- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: Script complesso per rinominare grandi quantità di file
Fai un riassunto di cosa vorresti ottenere con questo script?King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4386691#p4386691][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Sono passati ormai 11 mesi da quando ho scritto questo thread.
Ancora non ho trovato una soluzione e ogni giorno sto facendo prove su prove per riuscire a risolvere il problema di questo script.
Se qualcuno ha idea di come aiutarmi, gli sarò grato per sempre.
A che punto siete e quali sono i problemi aperti?
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
-
King84
Re: Script complesso per rinominare grandi quantità di file
E' passato più di un anno da quando ho aperto questo topic: ancora nessuna soluzione. Ogni giorno, da allora, per ore e ore provo a trovare il risultato giusto, compilando, ma ancora niente.
Se qualcuno ha idea di come risolverlo, gli sarò grato ab aeternum!
Se qualcuno ha idea di come risolverlo, gli sarò grato ab aeternum!
- cristian_c
- Accecante Asceta

- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: Script complesso per rinominare grandi quantità di file
Magari stai utilizzando il metodo 'sbagliato'King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4423863#p4423863][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:E' passato più di un anno da quando ho aperto questo topic: ancora nessuna soluzione. Ogni giorno, da allora, per ore e ore provo a trovare il risultato giusto, compilando, ma ancora niente.
Se qualcuno ha idea di come risolverlo, gli sarò grato ab aeternum!
-
King84
Re: Script complesso per rinominare grandi quantità di file
Sì avevo questo dubbio infatti....qualcuno è in grado di darmi una mano?
- cristian_c
- Accecante Asceta

- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: Script complesso per rinominare grandi quantità di file
Se avevi il dubbio che fosse sbagliato, perché hai continuato a ripetere a lungo l'errore?King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4424315#p4424315][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Sì avevo questo dubbio infatti....qualcuno è in grado di darmi una mano?
Può darsi che io sia 'brutto e cattivo', ma non hai intenzione di fornire feedback alle soluzioni date anche da altri utenti e rispondere alle loro domande
Se io fossi nei tuoi panni, farei ciò che mi è stato richiesto. Il problema si risolverebbe in pochissimo tempo invece che trascinarsi all'infinito. Magari io avessi più spesso qualcuno disponibile come gli utenti che hanno scritto in questo topic
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Script complesso per rinominare grandi quantità di file
@cristian_c pienamente d'accordo con te!
OT: ma è capitato davvero che qualcuno abbia scritto una frase del genere?
OT: ma è capitato davvero che qualcuno abbia scritto una frase del genere?
"Ho provato ad installare quello da te suggerito.. ma non me lo fa installare.. allora ho disinstallato il driver e ho provato ad installare quello che mi hai suggerito.. e me lo fa installare.. però è installato senza driver.. A sto puntoo ho disinstallato quello da te suggerito e reinstallato il driver.. Col driver installato se provo ad installare quello che mi hai suggerito da errore"
Salva l'Ucraina! 
-
King84
Re: Script complesso per rinominare grandi quantità di file
Scusate...ma che test dovrei fare sul mio sistema?
- cristian_c
- Accecante Asceta

- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: Script complesso per rinominare grandi quantità di file
Uno te lo aveva indicato UbuNuovo: http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4386742King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4424677#p4424677][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Scusate...ma che test dovrei fare sul mio sistema?
Certo. E il problema è anche stato risolto: si trattava dell'installazione dei driver del touchscreen su un all-in-oneOT: ma è capitato davvero che qualcuno abbia scritto una frase del genere?
-
King84
Re: Script complesso per rinominare grandi quantità di file
Ciao
sembla che funzioni discretamente. Una cosa non riesco a capire:
se si ottiene
cos'è tutto quel ".D.D.D.D" alla fine dei file rinominati?!?
Altra cosa: lo script fa discretamente la sostituzione di un carattere con un altro e la cancellazione di un carattere specificato...ma... io vorrei che lo script eliminasse e sostituisse anche stringhe, non solo caratteri. come si fa?
Comunque grazie
Codice: Seleziona tutto
#!/bin/bash
### blocco per creare la struttura di prova ###
#rm -rf "$1"
#mkdir "$1"
#touch "$1/abc 123.jpeg" "$1/abc_123.jpg" "$1/abc_123@.jpg" "$1/abc-123@.jpg" "$1/abc-123@.JPG"
#exit
### fine blocco per creare la struttura di prova ###
reset
# qua i simboli da eliminare
elimina=( "@" ";" ":" )
suff='.D'
controlla_esistenza(){
elenco_file="$(ls ${path}/)" # ho usato ls per chiarire
for f in $elenco_file;do
if [[ "$nwfile" == "$f" ]]
then
nwfile=${nwfile}$suff
fi
done
}
move() {
while read file ; do
nwfile=${file##*/}
path=${file%/*}
for i in ${elimina[@]}; do
nwfile="${nwfile//$i/}"
done
# Inserisci qua le tue sostituzioni:
nwfile=$(echo "$nwfile" | tr [:upper:] [:lower:] )
nwfile="${nwfile// /_}"
nwfile="${nwfile//-/_}"
nwfile="${nwfile//.jpeg/.jpg}"
controlla_esistenza
mv -v "$file" "${path}/${nwfile}" 2>/dev/null
done
}
find $1 -type d -print | move
find $1 -type f -print | movese si ottiene
Codice: Seleziona tutto
"img/abc_123@.jpg" -> "img/abc_123.jpg.D"
"img/abc 123.jpeg" -> "img/abc_123.jpg.D.D"
"img/abc-123@.jpg" -> "img/abc_123.jpg.D.D.D"
"img/abc-123@.JPG" -> "img/abc_123.jpg.D.D.D.D"
"img/abc_123.jpg" -> "img/abc_123.jpg.D.D.D.D.D"Altra cosa: lo script fa discretamente la sostituzione di un carattere con un altro e la cancellazione di un carattere specificato...ma... io vorrei che lo script eliminasse e sostituisse anche stringhe, non solo caratteri. come si fa?
Comunque grazie
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Script complesso per rinominare grandi quantità di file
nella funzione "controlla_esistenza" la variabile "$nwfile" inizialmente sarà uguale al valore che ha in quel momento e da lì in poi tornerà *sempre* falso e aggiungerai in ogni caso il suffisso. Peggio ancora, "$nwfile" da quel momento lo usi (senza resettarlo) anche per i file successivi, il che ti porta come vedi a una rinominazione errata. Per controllare l'esistenza dovresti fare come avevo suggerito vari post fa, che è sensibilmente diverso.King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4425091#p4425091][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Una cosa non riesco a capire:
se si ottieneCodice: Seleziona tutto
"img/abc_123@.jpg" -> "img/abc_123.jpg.D" "img/abc 123.jpeg" -> "img/abc_123.jpg.D.D" "img/abc-123@.jpg" -> "img/abc_123.jpg.D.D.D" "img/abc-123@.JPG" -> "img/abc_123.jpg.D.D.D.D" "img/abc_123.jpg" -> "img/abc_123.jpg.D.D.D.D.D"
Per non parlare di variabili globali come nwfile e path usate e modificate nelle funzioni dove invece sarebbe meglio passarle e ritornarle esplicitamente.
Inoltre il modo di creare $elenco_file ha i soliti problemi nel caso di nomi contenenti spazi, le alternative sono sempre quelle.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
King84
Re: Script complesso per rinominare grandi quantità di file
D'accordo....ma allora è sbagliato il tuo script che ho ripreso due post fa?
Non riesco a capire se quella che mi hai dato e che ti ho riportato due post fa è la soluzione definitiva o semplicemente uno studio sugli errori del tuo script, errori che non sono risolvibili a quanto pare?
sono confuso
Non riesco a capire se quella che mi hai dato e che ti ho riportato due post fa è la soluzione definitiva o semplicemente uno studio sugli errori del tuo script, errori che non sono risolvibili a quanto pare?
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Script complesso per rinominare grandi quantità di file
io lo sono ancora di piùKing84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4425941#p4425941][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:D'accordo....ma allora è sbagliato il tuo script che ho ripreso due post fa?
Non riesco a capire se quella che mi hai dato e che ti ho riportato due post fa è la soluzione definitiva o semplicemente uno studio sugli errori del tuo script, errori che non sono risolvibili a quanto pare?
sono confuso
Non so a cosa ti riferisci, l'unico esempio in *pseudocodice* che ho postato riguardante il controllo dellìesistenza di un path si trova qui: http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4250706
ed è _decisamente_ diverso da quanto hai prodotto. Pur essendo pseudocodice - per cui ovviamente NON va preso alla lettera - se ti sei "ispitato" a quello... non so come hai fatto ad arrivare all'altro.
Quali sarebbero gli errori irrisolvibili?
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
King84
Re: Script complesso per rinominare grandi quantità di file
Ricapitolando: che cosa devo modificare nel seguente script
per far sì che segua queste quattro uniche regole?
1) Eliminare da ogni nome alcuni caratteri singoli (ad esempio eliminare il carattere @)
2) Sostituire da ogni nome alcune stringhe con altre (ad esempio sostituire a ".jpeg" la stringa ".jpg")
3) Dalla cartella dove viene lanciato, deve entrare ricorsivamente dentro ogni sottocartella
4) Ovviamente non eliminare alcun file!
Codice: Seleziona tutto
#!/bin/bash
### blocco per creare la struttura di prova ###
#rm -rf "$1"
#mkdir "$1"
#touch "$1/abc 123.jpeg" "$1/abc_123.jpg" "$1/abc_123@.jpg" "$1/abc-123@.jpg" "$1/abc-123@.JPG"
#exit
### fine blocco per creare la struttura di prova ###
reset
# qua i simboli da eliminare
elimina=( "@" ";" ":" )
suff='.D'
controlla_esistenza(){
elenco_file="$(ls ${path}/)" # ho usato ls per chiarire
for f in $elenco_file;do
if [[ "$nwfile" == "$f" ]]
then
nwfile=${nwfile}$suff
fi
done
}
move() {
while read file ; do
nwfile=${file##*/}
path=${file%/*}
for i in ${elimina[@]}; do
nwfile="${nwfile//$i/}"
done
# Inserisci qua le tue sostituzioni:
nwfile=$(echo "$nwfile" | tr [:upper:] [:lower:] )
nwfile="${nwfile// /_}"
nwfile="${nwfile//-/_}"
nwfile="${nwfile//.jpeg/.jpg}"
controlla_esistenza
mv -v "$file" "${path}/${nwfile}" 2>/dev/null
done
}
find $1 -type d -print | move
find $1 -type f -print | move1) Eliminare da ogni nome alcuni caratteri singoli (ad esempio eliminare il carattere @)
2) Sostituire da ogni nome alcune stringhe con altre (ad esempio sostituire a ".jpeg" la stringa ".jpg")
3) Dalla cartella dove viene lanciato, deve entrare ricorsivamente dentro ogni sottocartella
4) Ovviamente non eliminare alcun file!
-
King84
Re: Script complesso per rinominare grandi quantità di file
E' ormai passato un anno e mezzo da quando ho aperto questo thread ed ancora non ho trovato soluzione.
Qualcuno è in grado di aiutarmi?
Qualcuno è in grado di aiutarmi?
- cristian_c
- Accecante Asceta

- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: Script complesso per rinominare grandi quantità di file
Eppure, avevi scritto:King84 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4492364#p4492364][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:E' ormai passato un anno e mezzo da quando ho aperto questo thread ed ancora non ho trovato soluzione.
Qualcuno è in grado di aiutarmi?
sembla che funzioni discretamente.
Re: Script complesso per rinominare grandi quantità di file
Provo a risponderti io (scusatemi).
Potrebbero esserci due file che dopo la modifica avrebbero lo stesso nome.
Quindi, dopo la rinomina sia "ciao@.jpg" che "ciao.jpeg" diventerebbero "ciao.jpg".
Questo non va bene, perché altrimenti uno dei due file verrebbe eliminato.
Qual'è la soluzione?
modificare il nome di uno di questi due file.
Come?
semplice: controllando PRIMA di rinominare un file se esiste già un file con lo stesso nome.
Quindi, se esiste già un file che si chiama "ciao.jpg", lo script salva su "ciao.jpg.D".
Se esiste già "ciao.jpg.D", allora salva "ciao.jpg.D.D" e così via.
Cos'è che non capisci/non va bene in questo?
metti
poi: FAI UNA COPIA DELL'INTERA CARTELLA con i file e provi lo script, per verificarne il funzionamento.
Se qualcosa dovesse non funzionare, facci sapere.
Guarda anche qui. Non è proprio il tuo stesso problema, ma potresti trovare spunti interessanti.

Qual'è il problema?cos'è tutto quel ".D.D.D.D" alla fine dei file rinominati?!?
Potrebbero esserci due file che dopo la modifica avrebbero lo stesso nome.
Quindi, dopo la rinomina sia "ciao@.jpg" che "ciao.jpeg" diventerebbero "ciao.jpg".
Questo non va bene, perché altrimenti uno dei due file verrebbe eliminato.
Qual'è la soluzione?
modificare il nome di uno di questi due file.
Come?
semplice: controllando PRIMA di rinominare un file se esiste già un file con lo stesso nome.
Quindi, se esiste già un file che si chiama "ciao.jpg", lo script salva su "ciao.jpg.D".
Se esiste già "ciao.jpg.D", allora salva "ciao.jpg.D.D" e così via.
Cos'è che non capisci/non va bene in questo?
Al posto diAltra cosa: lo script fa discretamente la sostituzione di un carattere con un altro e la cancellazione di un carattere specificato...ma... io vorrei che lo script eliminasse e sostituisse anche stringhe, non solo caratteri. come si fa?
Codice: Seleziona tutto
elimina=( "@" ";" ":" )
Codice: Seleziona tutto
elimina=( "@" "stringa1" "stringa2" "e così via")
Se qualcosa dovesse non funzionare, facci sapere.
Guarda anche qui. Non è proprio il tuo stesso problema, ma potresti trovare spunti interessanti.
-
King84
Re: Script complesso per rinominare grandi quantità di file
Ciao,
grazie, ma non funziona. Mi ha cancellato permanentemente alcuni file che sarebbero dovuti rimanere.
Non sarebbe meglio mettere:
elimina=( "@" "stringa1" "stringa2" "e così via" "elimina=( "@" ";" ":" )")
?
grazie, ma non funziona. Mi ha cancellato permanentemente alcuni file che sarebbero dovuti rimanere.
Non sarebbe meglio mettere:
elimina=( "@" "stringa1" "stringa2" "e così via" "elimina=( "@" ";" ":" )")
?
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti
