Può capitare di dover listare il contenuto di una directory ma di voler escludere, dalla visualizzazione, tutti i file con estensione *.xyz. Ci sono diversi modi per fare questo e ne vedremo solo alcuni.
1) Utilizzando il comando “ls”
Tramite il comando ls possiamo listare il contenuto escludendo quello che non ci interessa. Per far ciò per prima cosa dovremmo abilitare l’opzione extglob che permette di utilizzare la tecnica del pattern matching (vedi man bash ).
Dentro una directory ho i seguenti file
-rw-r--r-- 1 lightuono lightuono 128058 feb 12 21:25 files.zip -rw-r--r-- 1 lightuono lightuono 1274420 feb 11 22:20 pac-4.5.0.3-all.deb -rw-r--r-- 1 lightuono lightuono 1178381 feb 11 22:45 pac.zip -rw-r--r-- 1 lightuono lightuono 521615 feb 12 19:43 server.log
Ora voglio escludere dalla visualizzazione tutti i file con estensione *.zip. Con il comando ls devo fare così:
$ shopt -s extglob $ ls !(*.zip) -ld -rw-r--r-- 1 lightuono lightuono 1274420 feb 11 22:20 pac-4.5.0.3-all.deb -rw-r--r-- 1 lightuono lightuono 521615 feb 12 19:43 server.log
Ho messo l’opzione -d per evitare di guardare il contenuto di ogni directory e di seguire eventuali collegamenti simbolici. Togliendo l’opzione -d, ad ogni directory che incontrerà ci mostrerà il suo contenuto.
2) Utilizzando il comando “grep”
Anche con il comando grep possiamo listare solo quello che ci interessa escludendo quello che non vogliamo. Basandoci sempre sull’esclusione dei file *.zip, possiamo utilizzare la seguente formula:
$ ls -ls | grep -v "\.zip$" rw-r--r-- 1 lightuono lightuono 1274420 feb 11 22:20 pac-4.5.0.3-all.deb -rw-r--r-- 1 lightuono lightuono 521615 feb 12 19:43 server.log
3) Utilizzando il comando “find”
Anche con il comando find possiamo listare escludendo quello che vogliamo. Escludiamo di nuovo tutti i file *.zip con la seguente formula:
$ find . -maxdepth 1 -type f \( ! -iname "*.zip" ! -iname "." \) ./pac-4.5.0.3-all.deb ./server.log
Certo come visualizzazione non è il massimo, ma possiamo migliorare:
$ find . -maxdepth 1 -type f \( ! -iname "*.zip" ! -iname "." \) -exec ls -l {} \;
-rw-r--r-- 1 lightuono lightuono 1274420 feb 11 22:20 ./pac-4.5.0.3-all.deb
-rw-r--r-- 1 lightuono lightuono 521615 feb 12 19:43 ./server.log
Ecco qui elecanti tre metodi per poter escludere dei file da una lista. Sicuramente più leggibili il primo e secondo metodo
Dev Null





