Come iterare per ogni cartella con Bash

Cerca

Lo scenario è tra i più comuni nell’ambito dell’amministrazione di sistemi Linux based. Quando abbiamto bisogno di preparare uno script Bash che itera operazioni per ogni cartella presente in un dato percorso, possiamo seguire questa semplice guida.

Iterare operazioni per ogni cartella in Bash

Ipotiziamo di avere una serie di file e cartelle contenute nel percorso /home/my-folder/ e di avere la necessita di ripetere una serie di istruzioni solo per tutte le cartelle (escludendo quindi i file) contenute nel percorso. Le porzioni di codice qui sotto vanno eseguite dal percorso /home/my-folder. Il nostro script Bash si presenterà così
				
					for f in */ ; do
    echo "$f"
done

				
			

La presenza dello slash dopo l’asterisco sta ad indicare che verranno tenute in considerazione solo le cartelle.

Inoltre, nel caso in cui si volessero escludere anche i link simbolici dal computo, possiamo aggiungere una condizione che nel caso in cui sia verificata salta all’iterazione successiva.

Lo script Bash si presenterà quindi così

				
					for f in */ ; do
    [ -L "${f%/}" ] && continue
    echo "$f"
done
				
			

Un’altra valida alternativa è quella di testare se è effettivamente una cartella.

In questo caso lo script Bash sarà come il seguente

				
					for f in *; do
    if [ -d "$f" ]; then
        echo "$f" #$f è una directory
    fi
done
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come cambiare il server DNS su Ubuntu

Cambiare il server DNS usato da Ubuntu è un’operazione piuttosto semplice, ma che comunque deve essere condotta con attenzione. Vediamo quindi in questo articolo come

Partners