Excluindo um arquivo no loop do bash

9

No script a seguir, Como excluo um diretório no loop? Eu quero fazer isso porque todos os arquivos são links simbólicos apontando para este diretório que existe no mesmo nível, então eu não quero adicioná-lo.


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

    
por hknik 25.02.2012 / 22:26

2 respostas

11

Você pode adicionar uma declaração continue 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

Ou você pode fazer isso com o comando find :

find /var/www -maxdepth 1 -type d \( -name foo \) -prune -o -print -exec bash -c "tar -czfh \'basename {}\'.tar.gz {}" \;
    
por 25.02.2012 / 22:36
7

Você precisa ativar extglob para isso, se ainda não estiver ativado ( shopt -s extglob ):

for dir in !(dirname)/
...
    
por 25.02.2012 / 22:40

Tags