Dividere i contatti di un vCard della Rubrica Indirizzi di MacOsX

I file VCF, come forse molti di voi sapranno, sono files contenenti informazioni di uno o più contatti di rubrica: praticamente l’equivalente virtuale di un biglietto da visita. La loro diffusione nasce, a mio avviso, dal fatto che sono abbastanza (sottolineo: abbastanza) standard (formato vCard) e sono composti in semplici caratteri di testo (ovvero possono essere perfino creati e modificati a mano con un normale editor di testo).

La possibilità della rubrica indirizzi di MacOsX di esportare i contatti in VCF è dunque interessante ai fini della compatibilità con altri sistemi, ma prevede una limitazione: se tento di selezionarne più d’uno e poi eseguire l’esportazione (Archivio -> Esporta vCard) il risultato non saranno dei singoli files ma un unico VCF contenente in sequenza tutti i contatti. Problema: le implementazioni più rigorose del formato vcf (ad esempio quelle dei cellulari) prevedono la presenza di un solo contatto per file. Come aggirare questo problema? Selezionare ed esportare un contatto alla volta, dando ogni volta un nome diverso e sprecando così la mia vita mortale esportando centinaia di contatti?

Ovviamente no. I potenti mezzi del Terminale ci forniscono la possibilità di suddividere e rinominare comodamente il contenuto del VCF “di gruppo” in pochi e semplici (!?!) passaggi.

1) Selezionare tutti i contatti, Archivio -> Esporta vCard, salvare il file “Schede.vcf” in una cartella dedicata.

2) Da terminale, suddividere il file in più spezzoni ciascuno dei quali contiene un contatto.

csplit -n3 -k Schede.vcf /END:VCARD/1 {1000}

3) i singoli file saranno nominati con il metodo di default: xx + numero d’ordine. L’ultimo file sarà in più e quindi vuoto (a causa del metodo di separazione utilizzato in precedenza). Possiamo andare a cancellarlo a mano, o possiamo usare uno script che analizza tutti i file alla ricerca di quello (o quelli) con dimensioni nulle:

for i in $(ls xx*); do
a=$(du $i);
a=$(echo $a | cut -d’ ‘ -f1);
if [ “$a” = “0” ]; then
rm $i;
fi;
done

Molto più divertente, no? Scherzi a parte, è anche tutto automatico, il che rende possibile utilizzarlo in uno script.

3) Per concludere, possiamo rinominare i files (xx[numero]) con il FN (ovvero il nome visualizzato) del contatto che contengono. A questo scopo si può usare questo sistema:

for i in $(ls xx*); do
a=$(cat $i | grep FN | sed -e ‘s/FN://g’ | sed -e ‘s/ /_/g’);
mv $i $a.fn;
done

Ecco fatto.. purtroppo il sistema non è perfetto e alcune schede non riuscirà a convertirle, vuoi perchè manca il FN o perchè questo contiene caratteri che al terminale non piace. Per queste poche eccezioni bisognerà procedere a mano, ma il grosso del lavoro è svolto automaticamente. Comodo, no?

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , , , , . Contrassegna il permalink.

2 risposte a Dividere i contatti di un vCard della Rubrica Indirizzi di MacOsX

  1. beppe ha detto:

    Il consiglio è piuttosto utile, però quello della Apple di più: per esportare più contatti separatamente basta selezionarli e trascinarli fuori tenendo premuto il tasto opzione.
    Non so se questa è una novità degli ultimi due anni, però siccome il tuo articolo resta, mi permetto di aggiungerci questa cosa.

  2. PicciMario ha detto:

    grazie per la segnalazione.. in effetti il metodo che hai segnalato è corretto, e non ti so dire se è una novità o se all’epoca semplicemente non lo conoscevo.. comunque è più divertente scrivere uno script in bash che non usare il mouse :-)))

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...