Excluindo um arquivo no loop bash


10

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


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

Respostas:


13

Você pode adicionar uma continuedeclaração 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 fazê-lo com o findcomando:

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

7

Você precisa habilitá extglob-lo se ele ainda não estiver ativado ( shopt -s extglob):

for dir in !(dirname)/
...
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.