Ausschließen einer Datei in der Bash-Schleife

10

Wie schließe ich im folgenden Skript ein Verzeichnis in der Schleife aus? Ich möchte dies tun, da alle Dateien Symlinks sind, die auf dieses Verzeichnis verweisen, das auf derselben Ebene vorhanden ist. Daher möchte ich es nicht hinzufügen.


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

hknik
quelle

Antworten:

13

Sie können eine continueAnweisung wie folgt hinzufügen :

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

Oder Sie können es mit findBefehl tun :

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

Sie müssen dies aktivieren, extglobwenn es noch nicht aktiviert ist ( shopt -s extglob):

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