linux-l: chown|chmod -r --ohne_dirs
Dr.Bernd Freistedt
bf at bcf.in-berlin.de
Di Mär 20 20:18:01 CET 2001
---Ulrich Wiederhold (linux-l at mlists.in-berlin.de) wrote on Tue, 20 Mar 2001 19:51:09 +0100
>> Man nehme mal wieder das komfortable `find` vielleicht mit der
>> option -type d in beglueckendem Zusammenspiel mit grep oder
>> grep -v und haenge ein `| xargs chmod/chgrp/chown -R` dran
>> (natuerlich nicht alle drei gleichzeitig :-) )
>
> Gute Idee! Allerdings komme ich mit dem Wort "beglueckendem" nicht ganz
> klar (trotz "man xargs").
> Habe erst mal versucht, alle Namen herauszufiltern, die "subdir2"
> enthalten (ist nur ein Verzeichnis). Das mit invers (-v) umzukehren,
> sollte dann nicht mehr das Problem sein...
> find /dir -type d -maxdepth 1 `|xargs grep subdir2 *`
Quark
z.B.:
find /dir -type d -maxdepth 1 | grep 'subdir2' |\
egrep -v 'alles|was|Du|nicht|haben|willst' |\
xargs chown -R oma:rentner
Bem.:
a) meinetwegen auch maxdepth. wenn es _genau_ das bringt was Du
willst.
b) das erste grep koennte - wenn der Pfad-/Dateiname gut mit
regexp bezukommen ist - auch egrep verwendet werden. Das ist
komfortabler.
c) man tut manchmal gut das Suchmuster in '' einzuschliessen
d) darf ich vom Verstaendnis des \ ausgehen? (Befehl geht
naechste Zeile weiter)
e) mit dieser Kommandozeile werden nur die Directories
umgesetzt; wenn auch die Datei gemeint sind, lass -type d
weg. Wenn _nur_ Dateien und keine Dirs gemeint sein sollen:
-type -f
> Außerdem müßten eigentlich mehrere Directories herausgefiltert werden,
> also der Art:
> find /dir -type d -maxdepth 1 `|xargs grep -v subdir2|subdir4 *` `|xargs
Was soll der Asterix? - Bloedsinn. Da passiert nix.
man regexp (!)
> WoW! Sowas komplizierten (nicht lachen!) habe ich noch nie auf der
> Kommandozeile gemacht!
Das ist Butter-und-Brot-Werkzeug!
Zur Weiterbildung empfehle ich dann noch sed und awk (aber beide
richtig!) ... Dann kannst Du alle Deine Daten fein frickeln.
Gruessli
Bernd
Mehr Informationen über die Mailingliste linux-l