Repository 32bit  Forum
Repository 64bit  Wiki

trovare stringhe uguali

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.

trovare stringhe uguali

Messaggioda fortea » ven set 03, 2010 14:33

buongiorno a tutti!
ho bisogno di rinominare i file presenti in una directory (e nelle sottodirectory) in modo tale che non ci siano file con lo stesso nome.
La mia idea, finora, è di creare un elenco di file con
Codice: Seleziona tutto
find . -name *
e mettere prima basename, in modo tale da ottenere solo i nomi dei file. Ma poi come posso ottenere le coppie di stringhe identiche e risalire all'intero indirizzo del file per modificarne il nome (ad esempio aggiunendo automaticamente un indice numerico)?

grazie mille!
fortea
Linux 1.0
Linux 1.0
 
Messaggi: 24
Iscritto il: gio lug 15, 2010 13:00
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: fluxbox

Re: trovare stringhe uguali

Messaggioda masalapianta » ven set 03, 2010 14:52

così al volo mi viene in mente questo:
for i in `find . -type f -exec basename {} \; |sort|uniq -d`; do for j in `find . -name "$i"`; do mv $j $j-`stat $j |grep Inode|awk '{print $4}'`;done ;done
sicuramente ci son soluzioni più efficienti (rispetto ad un doppio for), ma ho sonno e mi si sta rinfacciando la lasagna mangiata a pranzo
Avatar utente
masalapianta
Iper Master
Iper Master
 
Messaggi: 2775
Iscritto il: dom lug 24, 2005 23:00
Località: Roma
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian

Re: trovare stringhe uguali

Messaggioda Mario Vanoni » ven set 03, 2010 16:51

fortea ha scritto:buongiorno a tutti!
ho bisogno di rinominare i file presenti in una directory (e nelle sottodirectory) in modo tale che non ci siano file con lo stesso nome.
La mia idea, finora, è di creare un elenco di file con
Codice: Seleziona tutto
find . -name *
e mettere prima basename, in modo tale da ottenere solo i nomi dei file. Ma poi come posso ottenere le coppie di stringhe identiche e risalire all'intero indirizzo del file per modificarne il nome (ad esempio aggiunendo automaticamente un indice numerico)?

Non posso esistere in una dir due files con nome metti "annabella",
neppure un file ed una subdir con lo stesso nome!

Quindi cerchi "annabella" nella prossima subdir,
e nelle altre X subdir/subdir/... successive,
e ne vorresti cambiare il nome.

Ho capito il tuo problema?

Con find(1) trovi tutte le "annabella",
ma come rinominarle, al livello sub2, sub3, sub4 ecc.?
Soprattutto con quale criterio?
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti