Chown i chmod, rekurzivno

Da li je moguce sa chown i chmod zadati vlasnistvo i prava pristupa rekurzivno ali samo na fajlove a da prava na direktorijima ostaju nepromjenjena?

na primjer

dir0 (777)
dir1 (777)
file.txt (777)
file2.txt (777)
dir2 (777)
dir3(777)
file3.txt (777)

Samo na fajl postaviti 640 a da direktoriji ostanu 777.

Koliko sam ja skontao nije moguce?

iz glave …
u dir0
find . -type f -exec chmod 640 {} ;

Nešto lakše za zapamtiti (a nije zgoreg znati za xargs, može se iskoristiti na mnogo mjesta):

EDIT: -t => -type

-t ne radi, moras staviti -type

find: invalid predicate `-t’

Eh da … i jedna funkcionalna razlika izmedju ova dva poziva (nevazna za ovaj problem koji je OP imao) -
kod ovog sa find, komanda chmod se poziva po jednom za svaki fajl
dok se kod ovog adisovog sa xargs - chmod poziva jednom za sve fajlove …

Ova funkcionalnost IMHO bi trebala biti ugradjena u chmod i chown. Mozda da napravimo feature request?

Hmm, to znači ugrađivati “find” funkcionalnost u svaki pojedinačni komad softvera :-D, not hapenning

Mislim da adioe3 nije mislio na to, nego da imaš opciju -f “primijeni samo na fajlove” i -d “primijeni samo na direktorije” (tako nešto).

Upravo.

Slippery slope, primjeni samo na symlinkove, primjeni samo na fajlove tog tipa, …, što nas opet dovodi na isto.

mislim da u duhu “KISS-a” to ne bi trebalo raditi …

[quote=adis]Nešto lakše za zapamtiti (a nije zgoreg znati za xargs, može se iskoristiti na mnogo mjesta):

EDIT: -t => -type[/quote]
Ide kako treba sa find /dir0 -type f | xargs chmod 640

ali prijavljuje gresku kada naidje na fajlove koji imaju space tj
fajl: adis hamo.txt

chmod vidi kao dva fajla: adis i hamo.txt

Ne pomazu ni {} …
Moze li se xargs zadati da “hvata” i fajlove sa razmakom u nazivu?

find . -type f -exec chmod 640 {} ;
confirmed: ovo radi za fajlove s razmakom, dok xargs neće

Hmm, nikad nisam naletio na taj problem jer ne stavljam razmak u nazive :smiley:

Može naravno i sa xargs, al već malo komplikuje život.