Strona 1 z 1

[SOLVED] to execute /bin/rm: Argument list too long

: 05 cze 2010, 18:38
autor: delcadro
kiedy wpisuje

Kod: Zaznacz cały

rm `find -iname *.gif`
lub

Kod: Zaznacz cały

echo -e `find -iname *.gif` | rm
pojawia się błąd

Kod: Zaznacz cały

unable to execute /bin/rm: Argument list too long

Więc spróbowałem

Kod: Zaznacz cały

find -iname *.gif | rm 

Niestety powyższe już zupełnie nie odpowiada.

Jak mam poprawić drugą funkcję ??

Odp: to execute /bin/rm: Argument list too long

: 05 cze 2010, 19:13
autor: verdorben
find . -name "*.gif" -exec rm {} \;
find . -name "*.gif" | xargs -r rm

Odp: to execute /bin/rm: Argument list too long

: 05 cze 2010, 19:55
autor: beluosus

Kod: Zaznacz cały

find ... -delete

Odp: to execute /bin/rm: Argument list too long

: 06 cze 2010, 15:35
autor: delcadro
Dzięki działa.

Co oznacza zapis:

Kod: Zaznacz cały

{} \;
?

Odp: to execute /bin/rm: Argument list too long

: 06 cze 2010, 15:53
autor: beluosus

Kod: Zaznacz cały

[15:50:33];> man find | grep -3 {}
   AKCJE
       -exec polecenie ;
              Wykonuje polecenie; prawdziwe jeśli zwrócony został status 0. Wszelkie następne argumenty find są brane
              za  argumenty  polecenia,  aż  nie zostanie napotkany argument, składający się z `;'. Łańcuch `{}' jest
              podmieniany na obecnie przetwarzaną nazwę pliku.  Obydwie te konstrukcje być może będą  wymagały  wycy-
              towania  (znakiem  `\')  aby  uchronić je przed rozwinięciem przez powłokę. Polecenie jest wykonywane w
              katalogu startowym.
Backslash musi być przed średnikiem żeby nie został zinterpretowany jako koniec polecenia tylko jako koniec argumentu nazwy pliku. Równie dobrze można napisać:

Kod: Zaznacz cały

find ... {} ";"