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

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 {}" \;

7

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

for dir in !(dirname)/
...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.