[SOLVED] przekierowanie wyniku find do innego polecenia

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[SOLVED] przekierowanie wyniku find do innego polecenia

Post 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?
::::::::::: Delcadro::::::::::::
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: przekierowanie wyniku find do innego polecenia

Post 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.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: przekierowanie wyniku find do innego polecenia

Post 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.
::::::::::: Delcadro::::::::::::
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: przekierowanie wyniku find do innego polecenia

Post autor: beluosus »

W wypadku find uważam to za bezsensowne (-exec), ale owszem, da się, np:

Kod: Zaznacz cały

find ...  -print0 | xargs -0 ...
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [SOLVED] przekierowanie wyniku find do innego polecenia

Post 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
::::::::::: Delcadro::::::::::::
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości