Escludendo un file nel ciclo bash


10

Nel seguente script, Come posso escludere una directory nel ciclo? Voglio farlo perché tutti i file sono collegamenti simbolici che puntano a questa directory che esiste nello stesso livello, quindi non voglio aggiungerlo.


cd /var/www
for dir in */
do
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

Risposte:


13

Puoi aggiungere una continuedichiarazione come questa:

cd /var/www
for dir in */
do
        if [ "$dir" == "foo" ] ; then
              continue;
        fi
        base=$(basename "$dir")
        tar -czfh "${base}.tar.gz" "$dir"
done

Oppure puoi farlo con il findcomando:

find /var/www -maxdepth 1 -type d \( -name foo \) -prune -o -print -exec bash -c "tar -czfh \`basename {}\`.tar.gz {}" \;

7

È necessario abilitare extglobper questo se non è già abilitato ( shopt -s extglob):

for dir in !(dirname)/
...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.