Strona 1 z 1

[SOLVED] przekierowanie wyniku find do innego polecenia

: 20 sie 2010, 12:20
autor: delcadro
Niedawno "przypadkowo" pozmieniałem sobie rekurencyjnie pliki i katalogi w katalogu domowy. Chciałem automatycznie pozmieniać je za pomocą polecenia np.:

Kod: Zaznacz cały

find /home/delcadro/ -type d  | xargs chmod u+x

niestety powyższe polecenie sypie błędami w rodzaju:

Kod: Zaznacz cały

chmod: nie ma dostępu do `a': No such file or directory
Widać z tego, że polecenie dzieli nazwę katalogu na mniejsze części, przez co nie znajduje ich.



Rozwiązałem to za pomocą

Kod: Zaznacz cały

find  -type d  -exec chmod u+x {} \;
Pytanie dalej aktualne ale tylko z ciekawości.
Co z pierwszym poleceniem jest nie tak ?



Jak to przerobić aby działało także na katalogach ukrytych?

Odp: przekierowanie wyniku find do innego polecenia

: 20 sie 2010, 14:41
autor: beluosus
Zrób "xargs echo" to się dowiesz. Argumenty są oddzielone spacjami dlatego jak plik ma nazwę "jakaś nazwa" to jest to traktowane jako dwa argumenty: "jakaś" i "nazwa".
Find działa na wszystkich plikach (katalogach), także ukrytych.

Odp: przekierowanie wyniku find do innego polecenia

: 20 sie 2010, 23:12
autor: delcadro
Da się to wykonać to za pomocą "xargs" ? Nie daje mi to spokoju. Próbowałem oplatać to w cudzysłowy, $(chmod u+x) ale nic to nie daje.

Odp: przekierowanie wyniku find do innego polecenia

: 20 sie 2010, 23:27
autor: beluosus
W wypadku find uważam to za bezsensowne (-exec), ale owszem, da się, np:

Kod: Zaznacz cały

find ...  -print0 | xargs -0 ...

Odp: [SOLVED] przekierowanie wyniku find do innego polecenia

: 13 paź 2010, 11:53
autor: delcadro
A jak powiązać find z opcją dwuargumentową ??

Np:. z mv

Kod: Zaznacz cały

find -name *.jpg -print0 | xargs -0 mv  $2 /katalog/docelowy

?

Wyskakuje ciągły komunikat, że jakiś plik nie jest katalogiem