Finder

Ok diciamo che il nome che ha questo programma non è dei più felici: chi usa Macintosh conosce il Finder, l'interfaccia grafica (o GUI) del MacOS. Il mio Finder non è niente di tutto questo (purtroppo) ma il nome deriva dal verbo inglese to find che significa trovare: ebbene si, questo programma si prefigge il compito di trovare qualcosa ma esattamente, cosa? Bah diciamo unicamente file (almeno per ora) presenti all'interno di un particolare path (o directory). Detto così non dice nulla di nuovo ed io stesso non lo userei neanche se facesse solo questo: vi siete mai posti il problema di organizzare file in una directory, dividendo i file secondo un certo criterio (ad esempio per nome o per tipo)? Io si e scaricando file da Internet mi trovo tonnellate di file zip, jpg, rar, etc. che mi piace dividere così da poterli ritrovare più facilmente. Oppure altro caso interessante: avete copiato dei file da una parte all'altra, ad esempio su CD/DVD, e volete cancellare, dalla sorgente, i file che avete salvato nella destinazione ma i file copiati sono tanti e non avete voglia di star lì a vedere quali sono stati copiati effettivamente (magari avete fatto una copia non di tutti i file ma solo di alcuni all'interno di certe cartelle e quindi a logica doveste sfogliare cartella per cartella alla ricerca di quali file sono stati selezionati e copiati). Finché i file son pochi e la pazienza ci sostiene, la scansione manuale delle cartelle è la strada che si può percorrere ma quando si ha a che fare con un migliaio o più di file, inizia ad essere critica (e disperata) la situazione, soprattutto in termini di tempo. Allora che fare? Non so voi ma io mi sono inventato appunto questo piccolo programmino che mi risolve questi due ingrati compiti:

  • spostare file da una parte all'altra secondo un certo criterio;
  • confrontare due cartelle e vedere quali file sono comuni e cancellare, dalla directory sorgente, quelli che sono comuni.

Il criterio nel primo caso può essere basato sul nome (ad esempio si può cercare un file che inizia con la lettera p indipendentemente dall'estensione oppure tutti i file che hanno estensione .gif o più selettivamente siamo interessanti precisamente ad un file che si chiama prova.gif), oppure sul tipo di Content-Type (o MIME) ed in questo caso saremmo interessati a cercare i file che abbiano Content-Type image/gif oppure application/zip o altro. Più smaliziato è invece il criterio sul Fingerprint, ossia sull'impronta, su una stringa identificativa del file: esempio di Fingerprint è la seguenza MZ con cui iniziano i file EXE, i file eseguibili in ambiente MS-DOS (quelli che hanno Content-Type application/exe. Su ogni file che viene processato da Finder è possibile effettuare delle specifiche azioni che sono:

  • cancellazione: il file viene eliminato;
  • spostamento: il file viene spostato nel percorso specificato;
  • pure ricerca: il file viene trovato e ne viene data l'ubicazione;
  • saltare qualsiasi altra azione: se ci sono altre regole per tale file, le altre vengono saltate e l'interesse per tale file resta lì. Quest'azione è utile se vogliamo evitare di processare un certo tipo di file.

Queste azioni possono essere configurate mediante parametri da riga di comando ma anche mediante l'utilizzo di un file di configurazione in cui vengono definite le azioni ed il tipo di file su cui devono agire. Finder è nato come programma eseguibile unicamente da riga di comando, quindi anche i parametri vengono gestiti in tale modalità ma col tempo è stata aggiunta la modalità front-end (o GUI) che aiuta ad impartire e gestire più facilmente i molteplici comandi disponibili. Finder non esegue solo i compiti di spostamento e confronto, a cui si accennava prima ma fa anche altro e, tempo permettendo, molto ancora saràimplementato in futuro!

Finder è stato pensato per funzionare su più piattaforme software diverse (Windows, Linux, MacOS, etc), motivo per cui è stato scritto in Java 6. L'essere scritto in questo linguaggio permette, almeno virtualmente, di funziona su tutte le macchine purché dotate di Java Virtual Machine (JVM) 6 o superiore. In termini di grandezza, Finder è un piccolo file, vengono usate principalmente funzioni presenti all'interno della Java Virtual Machine e questo consente di ridurre le dimensioni del file a poche centinaia di Kbyte. Il file è ospitato anche su SourceForge.net anche se viene aggiornato poco frequentemente lì in favore di una maggior frequenza qua sul mio sito (nella sezione Download Zone).

Attualmente il progetto è un po' fermo ma spero presto di rimetterci mano!