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

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

7

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

for dir in !(dirname)/
...
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.