Sign in to follow this  
pollu

riconoscere file uguali ma con nome diverso

Recommended Posts

Ho scritto "lo so bene", quindi avevo già capito e confermato quanto tu avevi scritto. Io ho scritto una cosa diversa.

...che peraltro io ho compreso (wow!) e accettato.

Perdere una foto ogni mille non mi cambia nulla!

:-)

gianluca

Share this post


Link to post
Share on other sites

prova a vedere 'man cmp' da terminale

e poi magari prova a confrontare

time cmp -s file1 file2

time md5 file1

scusate io non so fare shell script, ma mi interessa, perciò intervengo..

se dico cavolate apprezzerò gli insegnamenti

PS. pollu, se dici quali sono e quanti sono i prefissi per identificare i pc di provenienza potrebbe essere utile.. e magari porta un esempio del nome di un file.

edit: c'è qualche file con degli spazi bianchi nel nome?

La mia idea era di fare uno script con ls, sort (che ordini a meno del prefisso), e cmp tra file con lo stesso nome (sempre a meno del prefisso)

Share this post


Link to post
Share on other sites

Beh se vuoi controllare tutti i file, con md5 il tempo che ti serve è proporzionale al numero di file, con cmp invece si fanno confronti a due a due, quindi il tempo aumenta all'incirca in proporzione al quadrato del numero di file. Penso che la differenza di tempo di esecuzione sia trascurabile a quel punto.

Share this post


Link to post
Share on other sites

no ma infatti usi cmp solo dopo sort, tra elementi successivi.

Ad esempio:

mac1-128437.jpg

mac1-221221.jpg

mac2-221221.jpg

mac1-546293.jpg

...

tra due elementi successivi (o meglio tre o quanti sono i pc da cui ha preso le foto) guardi prima se il nome coincide (a parte il prefisso), e solo in quel caso usi cmp.

edit: ripensandoci sort non serve, ogni file va confrontato con gli omonimi, tanto se non esistono cmp non fa niente

Share this post


Link to post
Share on other sites

Non esistono omonimi, il problema si pone a causa di una rinomina fatta sommariamente.

Fai così come dico io...

md5 di tutto -> file di testo con dimensione, md5, path -> sort dei file in base ai tre campi in ordine -> cmp dei file con stessa dimensione e anche md5 (probabilmente nessuno).

Ammesso che i nomi dei file non contengano spazi, si fa:

# for i in $(ls *.jpg); do md5 $i > md5.txt; done

Poi apri il file con textwrangler, selezioni tutto e fai Text -> Sort lines -> sorted lines replace selection, sort using pattern " = .*" (senza apici) e Entire match.

A quel punto fai Text -> process duplicate lines -> matching all, duplicates to new document, atch using pattern " = .*", entire match.

Ottieni un nuovo file con la lista dei file doppioni, sono già raggruppati. A quel punto devi solo controllarli. Volendo si potrebbe anche inserire il controllo della dimensione, ma questo metodo è immediato, come hai notato.

Altro metodo, esercizio a casa che io non ti farò: fai una cosa simile a ciò che ho fatto sopra, ma al posto di md5 usa semplicemente "ls -l" e ordina i file per dimensione e poi controlla i doppioni che hanno la stessa dimensione, al posto dell'md5. Nel Finder ordini la cartella per dimensione e poi controlli solo quelli che hanno la stessa dimensione in byte.

Share this post


Link to post
Share on other sites

no come sommariamente..

Per evitare che non mi copiasse file che avevano lo stesso nome (la numerazione di canon per due macchine diverse rimane la stessa) li ho rinominati tutti con un prefisso del computer da cui provenivano.

Oggi parto e torno domenica perciò non ho tempo di aspettare le risposte alle richieste che avevo fatto a pollu.

Ecco più o meno quello che farei.

cd ~/Desktop/[COLOR="SeaGreen"]prova[/COLOR]mkdir ~/Desktop/Doppionifor file in `ls`;  do	for pre in [COLOR="SeaGreen"]mac1 mac2 mac3[/COLOR]; do		prefisso=[COLOR="SeaGreen"]${file%_*}[/COLOR]		if [ $prefisso != $pre ]			then				cmp -s $file ${file/$prefisso/$pre};				if [ $? -eq 0 ]				then					echo "$file	${file/$prefisso/$pre}" > ~/Desktop/Doppioni/~log					mv $file ~/Desktop/Doppioni/$file				fi		fi	donedone

Chiaramente andrebbero aggiustati i parametri in verde in base a come sono i nomi e dove sono i file.

Questo dovrebbe spostare i doppioni nella cartella sulla scrivania e scrivere un file di log che li collega ai file uguali, giusto per poter controllare.

Se ho capito male mi dispiace, ma mi pare che ai nomi sia solo stato aggiunto un prefisso..

Share this post


Link to post
Share on other sites

capirex, questi sono i due professi anteposti ai nomi dei file.

iomegaIMG_9200.jpg

lacieIMG_9200.jpg

C'è la possibilità che, come l'esempio appena fatto, quei due file siano la stessa foto.

Come è possibile che siano due foto diverse.

Scusa non avevo ancora letto le tue risposte prima di ora!!!!

Comunque, sono sincer: continuo a capirci poco, ma voi mi sembrate sulla buona strada :-)

Grazie per l'interessamento. Davvero.

Gianluca

Share this post


Link to post
Share on other sites

ah solo due.

Perfetto allora copiati il mio script, al posto di "mac1 mac2 mac3" metti "iomegaIMG_9200.jpg lacieIMG_9200.jpg"

Al posto della cartella "~/Desktop/prova" metti la cartella che contiene le tue immagini

L'altra parte in verde (${file%_*}) lasciala così che ci avevo azzeccato.

Prima di provarlo magari fatti consigliare da qualcuno sull'uso del terminale e usalo prima su dei file di prova..

ora devo scappare, al massimo lunedi se hai ancora problemi sono qui

ciao

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this