Come ottenere la lista dei file contenuti in una cartella su macOS

Leggi questo articolo grazie alle donazioni di Maurizio Bigalli, Riccardo Saettone.
♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!

Vi è mai capitato di volere una lista testuale dei file contenuti in una cartella con macOS? Per quanto possa sembrare un'esigenza insolita è piuttosto comune, in realtà, e può presentarsi nelle occasioni più disparate. Serve se si vuole informare un'altra persona di alcuni dati in nostro possesso oppure per sapere cosa contiene un disco esterno anche quando è scollegato. Il nostro Elio, invece, ne ha bisogno per elencare i documenti allegati ai fascicoli delle sue pratiche legali, operazione che può essere piuttosto noiosa quando sono molti e si deve ricopiarli a mano. Proprio per questo ha eseguito una ricerca su internet ed ha trovato una procedura descritta da Mac Observer per risolvere il problema. Questa faceva uso della UI e delle app di sistema, con un po' di ingegno ed un pizzico di drag&drop, ma non mi è sembrata la soluzione più veloce e presenta alcuni limiti. In questo, come in molti altri casi, il Terminale consente di fare tutto più rapidamente e precisamente.

Partiamo dall'esempio più banale, ovvero quello di ottenere una lista pulita con i soli nomi dei file presenti in una data cartella. Per far ciò dovremo aprire il Terminale e scrivere ls seguito da uno spazio. A questo punto si dovrà trascinare l'icona della cartella interessata sulla finestra del Terminale usando il Finder, operazione che ne farà apparire il percorso completo. Dopo di questo si dovrà aggiungere il simbolo maggiore (>) per dirottare l'output al di fuori della linea di comando, scrivendo subito dopo il nome del file in cui salvarlo.

ls [percorso cartella] > [file su cui registrare la lista]

Supponendo che la cartella si trovi dentro quella Documenti della nostra home (identificata dal simbolo "tilde" ~) e che si voglia salvare la lista in un file chiamato "lista.txt" sulla Scrivania, ecco come potrebbe apparire il comando:

ls ~/Documents/Pratica > ~/Desktop/lista.txt

Scrivendo man ls scoprirete le tantissime opzioni disponibili e la prima che vorrei citare è la possibilità di elencare i file anche nelle sottocartelle. È quello che uso più spesso per memorizzare l'intero albero di un disco o di un percorso radice. A tale scopo è sufficiente aggiungere l'opzione -R (in maiuscolo) dopo ls e poi indicare la directory di partenza:

ls -R ~/Documents/Pratica > ~/Desktop/lista.txt

Una possibilità ulteriore da considerare è quella di chi ha bisogno di filtrare i risultati, ad esempio per tipologia. A tal proposito converrà posizionarsi inizialmente nella cartella di nostro interesse, così da rendere più semplice l'elencazione di uno o più filtri consecutivi. In sostanza si dovrà utilizzare il comando change directory, abbreviato in cd. La sintassi è uguale a quella della prima parte di ls ed anche qui si può usare il drag&drop della cartella dal Finder per evitare di scrivere manualmente il suo percorso.

cd [percorso cartella]

Pro tip: In alcuni casi si fa prima a scrivere il percorso manualmente, sfruttando l'autocompletamento. È sufficiente scrivere le prime lettere del percorso e poi premere il tasto Tab per vederlo completarsi da solo. La regola è che questo avverrà quando i caratteri digitati sono già sufficienti ad identificare univocamente un singolo file, in caso contrario si riceverà un avviso sonoro e con un secondo Tab apparirà l'elenco di quelli che rispondono ai requisiti di ricerca, così da poter aggiungere ulteriori caratteri ed evitare l'ambiguità.

Posizionarsi la directory di interesse è utile per semplificare un po' il comando, soprattutto quando si debba ripetere più volte il percorso intero. Un esempio tipico è quello dei filtri, che possono servire per vedere solo una o più tipologie di file. Nel caso specifico potrebbe essere utile filtrare solo le immagini nei formati PNG, JPG, GIF o altro. Essendo già nel percorso giusto non si dovrà ripeterlo e basterà elencare le chiavi di ricerca una di seguito all'altra, separate da uno spazio. Ecco un esempio:

ls *.png *.jpg *.gif *.tiff

Conviene evitare di dirottare subito l'output in un file esterno quando si sta ancora sperimentando la correttezza del comando, perché ci si potrebbe accorgere che nell'elenco manchi un file o ve ne sia uno di troppo. Tanto per fare un esempio concreto, un'immagine potrebbe avere estensione jpeg e non jpg, per cui bisognerà aggiungerla all'elenco. O magari potrebbero servire anche i PDF ma si è certi che non vi siano GIF e TIFF. Per cui il comando definitivo cambierebbe in questo modo:

ls *.png *.jpg *.jpeg *.pdf > /Desktop/lista.txt

Questi sono sono alcuni degli scenari possibili ma non ci vuole molto per capirne la logica e viaggiare con i propri passi, trovando anche soluzioni diverse. Il succo secondo me è sempre lo stesso, ricordarsi che la potenza del Terminale è sempre pronta a tornarci utile nelle occasioni più disparate.

Maurizio Natali

Titolare e caporedattore di SaggiaMente, è "in rete" da quando ancora non c'era, con un BBS nell'era dei dinosauri informatici. Nel 2009 ha creato questo sito nel tempo libero, ma ora richiede più tempo di quanto ne abbia da offrire. Profondo sostenitore delle giornate di 36 ore, influencer di sé stesso e guru nella pausa pranzo, da anni si abbronza solo con la luce del monitor. Fotografo e videografo per lavoro e passione, seguimi su Instagram

Commenti controllati Oltre a richiedere rispetto ed educazione, vi ricordiamo che tutti i commenti con un link entrano in coda di moderazione e possono passare diverse ore prima che un admin li attivi. Anche i punti senza uno spazio dopo possono essere considerati link causando lo stesso problema.