Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: alfonz19 14 Dubna 2009, 08:51:53

Název: problémy s mezerama
Přispěvatel: alfonz19 14 Dubna 2009, 08:51:53
Zdar,

s tímhle bojuju už dlouho a furt na to nemůžu přijít. Dejme tomu, že mám miliardu souborů, které mají špatná práva (ve skutečnosti mám tyhle problémy i v jiné sféře) a chci je změnit.

tohle nezafunguje, protože se soubory polámou podle mezer a začnu měnit práva neex. souborům
Kód: [Vybrat]
chmod 644 `find ./ -type f`
tohle samozřejmě projde, ale spousta souborů nebude správně nastavena
Kód: [Vybrat]
chmod 644 `find ./ -type f | grep -v " "`
zkoušel jsem tohle
Kód: [Vybrat]
chmod 644 "`find ./ -type f`"ale výsledek byl
Kód: [Vybrat]
bash: /bin/chmod: Argument list too long
Ok, pokud je tomu skutečně tak, že jsem jen předal příliš mnoho parametrů (netuším proč by k tomu mělo dojít), pak to můžu přepsat do for cyklu, ale to je stejná past protože budu muset jednotlivé soubory uzávorkovat a oddělit čárkami abych to narval do for cyklu. Zkoušel jsem nějak nastavit proměnnou IFS o které jsem se nedávno tomu dozvěděl, ale výsledné chování bylo více než zábavné (vhodným nastavením IFS mi přestalo fungovat prakticky vše a musel jsem vypnout&zapnout terminál). Jak je možné tuto situaci vyřešit jednodušeji?
Název: Re: problémy s mezerama
Přispěvatel: nettezzaumana 14 Dubna 2009, 08:57:18
## `man bash` .. !! uvozovky
find . -type f | while read line; do chmod 644 "$line"; done


## !! `man find`
find . -type f -exec chmod 644 '{}' \;

## ad.x) pokud si neco rozhodis nastavenim nejake promenne aka FOO tak ji snad staci jen flushnout pomoci `unset FOO` misto restartu terminalu ..