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
-
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
chmod 644 `find ./ -type f`
tohle samozřejmě projde, ale spousta souborů nebude správně nastavena
chmod 644 `find ./ -type f | grep -v " "`
zkoušel jsem tohle
chmod 644 "`find ./ -type f`"
ale výsledek byl
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?
-
## `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 ..