[RISOLTO]Bash eliminare punti ma non estensioni rename

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Nexet
Prode Principiante
Messaggi: 35
Iscrizione: giovedì 12 luglio 2012, 11:15

[RISOLTO]Bash eliminare punti ma non estensioni rename

Messaggio da Nexet »

salve raga , devo eliminare alcuni carattei strani e punti dai nomi di alcune foto , ma non capisco come farlo con rename senza che levi anche i punti alla finel del file prima dell'stensione.
con rename mi fa che il file foto_5.mare.jpg lo fa diventare foto5marejgp
quindi va a levare anche il punto fondamentale che determina l'estensione.
in pratica vorrei che mi levasse i caratteri ._-(punto , underscore e trattino) e li sostituisce con uno spazio senza intaccare l'ultimo punto dell'stensione.
es. foto_5.mare.jpg diventerebbe foto 5 mare.jpg
grazie in anticipo a tutti .
Ultima modifica di Nexet il venerdì 19 marzo 2021, 15:45, modificato 1 volta in totale.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Bash eliminare punti ma non estensioni rename

Messaggio da vaeVictis »

Codice: Seleziona tutto

vaevictis@vaevictis-N56VV:~$ rename -n  's/[_-]|\.(?=[^.]*\.)/ /g' fo-to_5.mare.jpg
rename(fo-to_5.mare.jpg, fo to 5 mare.jpg)
Come nome file ho usato fo-to_5.mare.jpg, così ci sono tutti i caratteri considerati.

Se vuoi aggiungere caratteri da modificare in spazio, ti basta aggiungerli all'interno delle prime parentesi quadre.

L'opzione -n di rename serve solo per visualizzare l'eventuale cambiamento. Tu puoi toglierla dopo aver visto che funzioni.



p.s.: i nomi dei file con spazi sono una idea discutibile.
p.p.s: in generale, conviene fornire un esempio di codice e non la descrizione a parole :)
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.»
Nexet
Prode Principiante
Messaggi: 35
Iscrizione: giovedì 12 luglio 2012, 11:15

Re: Bash eliminare punti ma non estensioni rename

Messaggio da Nexet »

perfetto grazie mille . si mi ero dimenticato di mettere il rename che usavo , per gli spazi diciamo che sono obbligato per via di un software che serve cosi il nome .
Nexet
Prode Principiante
Messaggi: 35
Iscrizione: giovedì 12 luglio 2012, 11:15

Re: Bash eliminare punti ma non estensioni rename

Messaggio da Nexet »

scusami se ti risturbo , potresti spiegarmi la sintassi che non riesco a modificarla , tipo voglio anche cancellare le @ e non sostituirle con lo spazio ?
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Bash eliminare punti ma non estensioni rename

Messaggio da vaeVictis »

Nessun disturbo.
Se vuoi aggiungere una differente modifica (ossia non in spazio), devi aggiungere una ulteriore istruzione di sostituzione:

Codice: Seleziona tutto

vaevictis@vaevictis-N56VV:~$ rename -n  's/[_-]|\.(?=[^.]*\.)/ /g;s/@//g' fo-to_5.m@are.jpg
rename(fo-to_5.m@are.jpg, fo to 5 mare.jpg)
Nella prima espressione regolare ci sono le parentesi quadre, che raggruppano una serie di caratteri da sostituire con lo spazio.

Poi c'è il carattere | che indica la condizione or.

Poi tra parentesi tonde, c'è una cosa che si chiama lookahead. Qui li trovi tutti (lookahead e lookbehind) spiegati (in inglese, ma anche avendo problemi c'è il traduttore del browser).

Ovviamente, se vuoi rimuovere altri caratteri oltre @, ti basta raggruppare i caratteri all'interno delle parentesi quadre (che vanno aggiunte al secondo comando analogamente a come sono state messe nel primo)
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.»
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23405
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: Bash eliminare punti ma non estensioni rename

Messaggio da trekfan1 »

Se è tutto a posto metti [Risolto] all'inizio del titolo del primo post cliccando sulla matita ed evitando di scriverlo tutto maiuscolo, grazie :)
Nexet
Prode Principiante
Messaggi: 35
Iscrizione: giovedì 12 luglio 2012, 11:15

Re: Bash eliminare punti ma non estensioni rename

Messaggio da Nexet »

ottimo grazie mille , un ultima cosa che non ho trovato nel sito , oltre a caratteri si puo specificare anche la parola da levare ?
tipo:
fo-to_5.m@are-gopro.jpg diventa in fo to 5 mare.jpg
eliminando gopro
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4445
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Bash eliminare punti ma non estensioni rename

Messaggio da UbuNuovo »

Le regex elaborano/confrontano carattere per carattere rispetto al pattern, rispettandone l'ordine.
Una stringa è una sequenza di caratteri, quindi il problema non sussiste. 'gopro' è un carattere 'g' seguito dal carattere 'o', seguito dal carattere 'p'....
Visto che la prima espressione sostituisce le corrispondenze con uno spazio, devi fare una nuova espressione che sostituisca i caratteri della stringa 'gopro' con niente.

Codice: Seleziona tutto

8-) rename -n 's/[_-]|\.(?![^.]*$)/ /g;s/@//g;s/gopro//g' fo-to_5.m@are-gopro.jpg
fo-to_5.m@are-gopro.jpg renamed as fo to 5 mare .jpg
oppure metti un OR nela seconda espressione:

Codice: Seleziona tutto

8-) rename -n 's/[_-]|\.(?![^.]*$)/ /g;s/@|gopro//g;' fo-to_5.m@are-gopro.jpg
fo-to_5.m@are-gopro.jpg renamed as fo to 5 mare .jpg
Però, ti devo dire che quello che stai facendo è sconsigliatissimo! Generalmente si fa il contrario, si sostituiscono gli spazi con _ o -.
È molto meglio non avere spazi nei nomi dei file.
Questo lo imparerai quando comincerai a fare degli script.

@Vae: Scusa l'intromissione ma volevo informare che gli spazi nei file andrebbero evitati.
Ciaux
Salva l'Ucraina! 🇺🇦
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Bash eliminare punti ma non estensioni rename

Messaggio da vaeVictis »

Già informato
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.»
Nexet
Prode Principiante
Messaggi: 35
Iscrizione: giovedì 12 luglio 2012, 11:15

Re: Bash eliminare punti ma non estensioni rename

Messaggio da Nexet »

graze mille ragazzi , si per gli spazi so bene di levarli , in realtà non li uso anche perche ogni volta devi mettere tra apici il nome con gli spazi , cerco di capire in tutte le forme il comando .
ancora grazie . :)
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23405
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: Bash eliminare punti ma non estensioni rename

Messaggio da trekfan1 »

trekfan1 ha scritto:
mercoledì 17 marzo 2021, 15:24
Se è tutto a posto metti [Risolto] all'inizio del titolo del primo post cliccando sulla matita ed evitando di scriverlo tutto maiuscolo, grazie :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti