linux-l: chown|chmod -r --ohne_dirs

Ralf Bärwaldt Ralf.Baerwaldt at partner.bmw.de
Mi Mär 28 17:31:26 CEST 2001


> debian:# find /dir -path '/dir/ungewollt' -prune -o -exec chown user.group

muss lauten:
find /dir -path '/dir/ungewollt' -prune -o -exec chown user.group {} \;

ich befuerchte aber, dass du trotzdem deine ungewollten
Dateien mit erwischst.

> > ich bin mir nicht sicher, ob du wirklich chown nur auf "dirs" anwenden
> > willst,
> ja, wenn ich danach chown -R verwende schon. Dacht, das chown -R bezieht
> sich nur auf die schon gefilterten Dirs, also ohne das nicht_gewollte.
> Wenn ich find ohne -type d und chown ohne -R verwende, funzt es auch
> nicht. (natürlich ohne -maxdepth 1).

muesste es aber, ansonsten ist deine "egrep -v"-Sequenz nicht
richtig.
 
> Außerdem hat das Weglassen den Nachteil, daß wenn in einem subdir der
> gewollten dirs ebenfalls "ungewollt" auftaucht, die Permissions da dann
> nicht geändert werden.

ups, da hast du ja eine Menge vor ...

Wie waere es mit einem voellig anderem Ansatz mal zu beginnen ?
Ich denke da erstmal die verschiedenen Schritte aufzuteilen
in einzelne Schritte, die man optimieren kann. Also ein
einfaches sh-script

#----- schnipp -----
#!/bin/bash

# ls "minux klein-el gross-er"
ls -1R /dir >/tmp/nix.1
egrep -v "ungewollt1|ungewollt2|...|ungewolltN" /tmp/nix.1 >/tmp/nix.2
for FILE in `cat /tmp/nix.2`
do
	ls -l $FILE
	chmod user.group $FILE
	ls -l $FILE
	echo
done
#----- schnipp ------

Jetzt kannst du die einzelnen Schritte leichter kontrollieren.
D.h. die Files /tmp/nix.1 und /tmp/nix.2 anschauen und solange
mit ls und egrep experimentieren, bis nur noch deine gewuenschten
Files uebrigbleiben.

Wenn alles wie gewuenscht klappt, packst du es in eine Zeile und
verwendest statt der for-schleife den xargs Befehl.
Dies geht natuerlich nur, wenn du nur einen Befehl (chmod) verwenden
willst.

Mit freundlichen Gruessen
Ralf Baerwaldt



Mehr Informationen über die Mailingliste linux-l