Portál AbcLinuxu, 10. května 2025 05:30
Řešení dotazu:
for i in `find .` do tu aplikujes tie prikazy na subory done
find a jeho parametry | while read prom; do echo "tady si delej co chces s $prom" done
find ... -print0 | xargs -0 necoPokud je potřeba dělat nějaké složitější akce, tak si napiš skript, který tu akci udělá na souborech, které se mu předají jako parametr a timhle to pak spust.
find www/ -type f -perm 600 -exec 'chmod -c 755 {}' \;
Projeď adresář www a na všechny soubory co mají právo čtení a zápisu pouze pro vlastníka aplikuj příkaz chmod s následujícími parametry.
Jinak poradím jen jedno. Hledej šmudlo a koukni se taky na http://cs.wikibooks.org/wiki/Linux
-exec
. Nicméně si napsat vlastní script, který ale nebude pracovat s jedním souborem, ale pomocí shift
(nebo for i; do ...; done
) postupně zpracuje všechny parametry a použít ... -print0 | xargs -0 ...
taky není vůbec špatný nápad (nicméně o chlup pomalejší než find | while read; do ... done
). Nicméně pokud jde fakt o rychlost, tak bych použil třeba perl
a File::Find
.
P.S.: Debilky jako Azurit, kteří jen tak plácnou úplnou kravinu a pak to omlouvají tím, že to byl jen takový návrh radši vůbec nečti. To je vidět na první pohled, že pár miliónů souborů vživotě nespracovával a o fungování for i in `find`
ví méně než nic (původně hovno).
find
má od nějaké verze možnost za -exec
místo \;
napsat +
a to se pak chová jako -print0 | xargs -0
RE R.S.: To je sice pekny, ale kdyby tu meli odpovidat jenom naprosty odbornici, tak bych se dockal odpovedi na svuj dotaz tak za 5 let...Ničím nepodložená spekulace.
nemuzu soudit jestli to je debilek nebo neni, ale aspon se snazil...Ne, nesnažil se. Jen tak plácnul první blobost co ho napadla. Kdyby ti poradil
rm -rf /
, tak budeš patrně taky šťastnej jak blecha.
# bash_find cesta action ... # bude volat action ... soubor shopt -s nullglob shopt -s dotglob function bash_find { local item local path="$1" shift if test -d "$path" ; then for item in "$path/"* ; do bash_find "$item" "$@" done else "$@" "$path" fi }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.