Unterordner finden aber nicht bei allen löschen

Haloman

Lt. Commander
Registriert
Jan. 2005
Beiträge
1.468
Hallo,

ich möchte einen bestimmten Ordner in einem vorgegeben Pfad finden. Dieser Ordner nennen wir ihn OrdnerX kommt in ca. 1000 User unterverzeichnissen vor. Ich möchte diesen OrdnerX aber nicht bei allen Usern löschen. Daher soll es eine Ausnahme geben.

Zu Übungszwecken habe ich mir einen Ordner angelegt unter /home/user/test und in diesem test Ordner sind die Ordner user1-9 mit dem unterordner test.

Wie bekomme ich es jetzt hin das ich nur den unterordner test bei den usern 4-9 lösche nicht aber bei 1-3?

Mein erster Versuch sah wie gefolgt aus:
find /home/user/test \(-path /home/user/test/user1 -prune -o -path /home/user/test/user2 -prune -o -path /home/user/test/user3 -prune \) -name 'test' -exec rm -rf {} \;

Bekomme da aber immer die Meldung:
find: zu viele ')'

Gruß
 
Also bei zsh geht es relativ einfach mit folgendem Befehl, ich weiß nicht ob es sowas ähnliches auch für bash gibt.

Code:
for i in (^(user1|user2|user3)); do rm -r  /home/user/test/$i/test ; done
 
Ungetestet müsste auch folgendes funktionieren:
rm -rf /home/user/test/user[4-9]/test

Hat dann eben nichts mehr mit finden zu tun und funktioniert nur, wenn die Usernamen in diesem Schema angelegt wurden.
 
aki, dein Befehl funktioniert, allerdings ist das Ziel des Threaderstellers ja gerade nicht, die Benutzer auszuwählen, wo es gelöscht werden soll, sondern diejenigen, wo es nicht gelöscht werden soll.

Ich weiß immer noch nicht, wie man das ganze in Bash zum laufen bringt, aber zumindest in zsh funktioniert auch folgendes (und ist deutlich einfacher, als das was ich oben gepostet habe):

Code:
rm -r /home/user/test/user(^([1-3]))/test

bzw.

Code:
rm -r /home/user/test/(^(user1|user2|user3))/test
 
Zurück
Oben