Z wyłączeniem pliku w pętli bash


10

W poniższym skrypcie, jak wykluczyć katalog w pętli? Chcę to zrobić, ponieważ wszystkie pliki są dowiązaniami symbolicznymi wskazującymi ten katalog, który istnieje na tym samym poziomie, więc nie chcę go dodawać.


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

Odpowiedzi:


13

Możesz dodać takie continueoświadczenie:

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

Lub możesz to zrobić za pomocą findpolecenia:

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

7

Musisz to włączyć, extglobjeśli nie jest jeszcze włączone ( shopt -s extglob):

for dir in !(dirname)/
...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.