Excluir un archivo en bash loop

10

En el siguiente script, ¿cómo excluyo un directorio en el bucle? Quiero hacer esto porque todos los archivos son enlaces simbólicos que apuntan a este directorio que existe en el mismo nivel, por lo que no quiero agregarlo.


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

hknik
fuente

Respuestas:

13

Puede agregar una continuedeclaración como esta:

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

O puedes hacerlo con el findcomando:

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

Debe habilitar extglobesto si aún no está habilitado ( shopt -s extglob):

for dir in !(dirname)/
...
Kevin
fuente