[Risolto] rinominare recursivamente con "rename"

Nuovo di Arch Linux? Nessun problema, fai qui le tue domande
Rispondi
gaglioffo
Arciere
Messaggi: 305
Iscritto il: 11 maggio 2016, 21:06

[Risolto] rinominare recursivamente con "rename"

Messaggio da gaglioffo » 11 novembre 2018, 13:28

ciao,
dovrei rinominare in "cover.jpg" tanti files .jpg che si trovano in diverse sottocartelle.
Ho provato così ma non funziona:

Codice: Seleziona tutto

rename *.jpg cover.jpg /tmp/pippo/*
a quanto sembra "rename" non ha molte opzioni, mi conviene usare un altro programma?
Ultima modifica di gaglioffo il 11 novembre 2018, 20:11, modificato 1 volta in totale.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Re: rinominare recursivamente con "rename"

Messaggio da 4javier » 11 novembre 2018, 14:54

Codice: Seleziona tutto

find cartella_padre -name '*.jpg' -exec mv {} cover.jpg
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7712
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: rinominare recursivamente con "rename"

Messaggio da TheSaint » 11 novembre 2018, 17:16

Io metterei un -iname, per passare anche i suffissi di *.JPG
Però, mi pare che non si ripete se non ci metti \; finale al comando...
F the saint
12 anni da questo forum ;)

gaglioffo
Arciere
Messaggi: 305
Iscritto il: 11 maggio 2016, 21:06

Re: rinominare recursivamente con "rename"

Messaggio da gaglioffo » 11 novembre 2018, 18:32

grazie, ma non sembra funzionare:

Codice: Seleziona tutto

$ find /tmp/pop/ -name '*.jpg' -exec mv {} cover.jpg
find: manca l'argomento per «-exec»
 

Codice: Seleziona tutto

$ find /tmp/pop/ -iname '*.jpg' -exec mv {} cover.jpg\;
find: manca l'argomento per «-exec»

VenereNera
Little John
Messaggi: 866
Iscritto il: 20 dicembre 2012, 19:50

Re: rinominare recursivamente con "rename"

Messaggio da VenereNera » 11 novembre 2018, 18:58

Forse intendeva così:

Codice: Seleziona tutto

$ find /tmp/pop/ -iname '*.jpg' -exec mv {} cover.jpg \;
Però attenzione che così sposta tutti i files .jpg in /tmp/pop/ sovrascrivendoli l' uno all' altro. Cioè sposta, rinomina, sovrascrive e ti ritrovi con un solo file cover.jpg perdendo gli ''originali''.
Secondo me conviene uno scriptino in bash.

EDIT: Io lo farei così:
find "." significa che il comando scansiona la cartella (e relative sottocartelle) dove è aperto il terminale.

Codice: Seleziona tutto

find "." -type f -iname '*.jpg' -exec bash -c 'dir_dest=`dirname "$0"`;mv "$0" "$dir_dest"/cover.jpg' '{}' \;
Per scrupolo è sufficiente sostituire il comando mv con echo per fare una prova.

gaglioffo
Arciere
Messaggi: 305
Iscritto il: 11 maggio 2016, 21:06

Re: rinominare recursivamente con "rename"

Messaggio da gaglioffo » 11 novembre 2018, 20:11

VenereNera ha scritto:
11 novembre 2018, 18:58
EDIT: Io lo farei così:
find "." significa che il comando scansiona la cartella (e relative sottocartelle) dove è aperto il terminale.

Codice: Seleziona tutto

find "." -type f -iname '*.jpg' -exec bash -c 'dir_dest=`dirname "$0"`;mv "$0" "$dir_dest"/cover.jpg' '{}' \;
così va bene, grazie!

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da 4javier » 11 novembre 2018, 20:59

Mi scuso per gli errori del mio post. Nella fretta ho scritto diverse fesserie che avrebbero potuto compromettere i dati dell'utente.
Promemoria per me: prima di suggerire comandi, testarli.

Alternativa al comando corretto proposto da VenereNera, che evita l'assegnazione della variabile

Codice: Seleziona tutto

find . -name '*.jpg' -exec bash -c 'mv "$1" $(dirname "$1")/cover.jpg' -- {} \;
Giuro che questo l'ho provato.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

VenereNera
Little John
Messaggi: 866
Iscritto il: 20 dicembre 2012, 19:50

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da VenereNera » 11 novembre 2018, 21:44

Sì, così è più pulito. :P

Avatar utente
TheSaint
Robin Hood
Messaggi: 7712
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da TheSaint » 12 novembre 2018, 5:35

4javier ha scritto:
11 novembre 2018, 20:59
Mi scuso per gli errori del mio post.
Direi che l' idea è la base, se l' utilizzatore cerca la pappa pronta, forse meglio che usi una distro africana :). Ritengo che per amministrare serve un po di esercizio mentale.
F the saint
12 anni da questo forum ;)

caruso spaonazzo
Arciere Provetto
Messaggi: 468
Iscritto il: 9 maggio 2017, 14:06

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da caruso spaonazzo » 14 novembre 2018, 14:07

per rinominare recursivamente con rename devi attivare l'opzione globstar

Codice: Seleziona tutto

$ shopt -s globstar
https://www.linuxjournal.com/content/gl ... ing-option

ora no so se rename riesca a fare quello che vuoi tu però, perché credo che rename sostituisca una stringa con un'altra

a questo punto la domanda è: come fare a sostituire qualsiasi stringa con la stringa "cover" come vuoi fare tu?

VenereNera
Little John
Messaggi: 866
Iscritto il: 20 dicembre 2012, 19:50

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da VenereNera » 14 novembre 2018, 21:49

@caruso spaonazzo Abbiamo risolto tre giorni fa. O.o

caruso spaonazzo
Arciere Provetto
Messaggi: 468
Iscritto il: 9 maggio 2017, 14:06

Re: [Risolto] rinominare recursivamente con "rename"

Messaggio da caruso spaonazzo » 16 novembre 2018, 14:08

sì ma con un metodo diverso

Rispondi