Buongiorno a tutti,
Scrivo qui, oggi per chiedere un chiarimento su uno script di cui avrei bisogno.
Io ho una cartella piena di immagini il cui nome però, è una caotica sequenza di cifre decimali, ed io vorrei realizzare uno script che mi permetta di rinominare ricorsivamente tutti i files contenuti in questa cartella, aggiungendo semplicemente alla fine di ogni immagine un iteratore che mi permetta di distinguerle.
Ho provato a seguire questa guida, ma il risultato che ottengo, è solo parziale, in quanto mi permette semplicemente di anteporre una stringa costante ad ogni file, ma non elimina il precedente nome già esistente del file.
Dal momento che stò ancora studiando bash chiedo aiuto alla comunity per modificare lo script di cui dispongo in maniera da eliminare l'esistente nome con un semplice iteratore.
Grazie mille
Leonardo
[Bash] Script per rinominare ricorsivamente files
- DoctorStrange
- Imperturbabile Insigne

- Messaggi: 2928
- Iscrizione: mercoledì 14 ottobre 2015, 9:33
- Desktop: Gnome3
- Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
- Sesso: Maschile
- Località: Roma, Italia
- steff
- Moderatore Globale

- Messaggi: 40354
- Iscrizione: domenica 18 febbraio 2007, 19:48
- Desktop: LXQt+labwc
- Distribuzione: Arch; Debian; Ubuntu Server
- Sesso: Maschile
- Località: Toscana
- Contatti:
Re: [Bash] Script per rinominare ricorsivamente files
Ci sono mille modi, nella mia collezione ho questo script (non è recursivo e case-sensitive):Se lo salvi in ~/bin dovrebbe essere nel $PATH.
In ogni modo fai delle prove o fai un backup prima di provare vari script.
Codice: Seleziona tutto
#!/bin/bash
#Rinomina con nome_data_ora_secondi le foto nella directory
# $1 nome iniziale del file.
#
for i in *.JPG; do mv $i $1_`exiv2 -p s $i | grep timestamp | awk '{ print $4 $3 $5}'`.JPG; done
In ogni modo fai delle prove o fai un backup prima di provare vari script.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
-
rai
- Imperturbabile Insigne

- Messaggi: 2886
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [Bash] Script per rinominare ricorsivamente files
integro quello che ha scritto steff perchè
1) le immagini potrebbero non contenere metadati usabili con exiv2
2) potrebbero non essere solo .JPG ma anche PnG, TifF etc
3) nel nome potrebbero esserci caratteri speciali (spazi p.es.)
Per sicurezza, invece di rinominare, lo script copia i file in un'altra cartella col nuovo nome (quando sei persuaso del risultato modifichi cp in mv)
1) le immagini potrebbero non contenere metadati usabili con exiv2
2) potrebbero non essere solo .JPG ma anche PnG, TifF etc
3) nel nome potrebbero esserci caratteri speciali (spazi p.es.)
Per sicurezza, invece di rinominare, lo script copia i file in un'altra cartella col nuovo nome (quando sei persuaso del risultato modifichi cp in mv)
Codice: Seleziona tutto
#!/bin/bash
# PERSONALIZZA QUESTE RIGHE
# vvvvvvvvvvvvvvvvvvvvvv
ORIGINE=percorso_della_cartella_con_le_immagini_originali
DEST=percorso_della_cartella_con_le_immagini_rinominate
PREFISSO=il_prefisso_comune_a_tutti_i_rinominati
# ^^^^^^^^^^^^^^^^^^^^^^
# crea la cartella destinazione
[[ -d "$DEST" ]] || mkdir -p "$DEST"
# identifica i file da rinominare ricorsivamente (anche nelle sottoCartelle)
SOURCES=$(find "$ORIGINE" -iregex ".*\.\(jpg\|jpeg\|png\|tiff\)") # analogamente per tutte le estensioni necessarie
IFS=$'\n' # nel caso i nomifile contengano spazi
for LINE in $SOURCES; do
EXT="${LINE##*.}"
((NUM++))
# rinomina i file aggiungendogli il n°incrementale
NEWNAME="$PREFISSO$NUM.$EXT"
cp "$LINE" "$DEST/$NEWNAME"
done
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti