Nowe posty

Autor Wątek: Find ? -exec {}  (Przeczytany 4947 razy)

anulka2009

  • Gość
Find ? -exec {}
« dnia: 2009-03-22, 16:18:01 »
Czytam man-a  niestety nie mogę zrozumieć , mam takie polecenie:

find . -name "*.txt" -exec {} ';'
Początek rozumiem - szukam w b.katalogu plików z rozszerzeniem .txt , a co powoduje ten -exec {} ';' ?

Dziękuję za wyjaśnienie

arctgx

  • Gość
Find ? -exec {}
« Odpowiedź #1 dnia: 2009-03-22, 16:30:32 »
Exec (jak nawet nazwa sugeruje) jest potrzebny, kiedy chcesz wykonać jakieś polecenie na każdym ze znalezionych plików (oznaczonym przez {}). Jeśli chcesz tylko wyszukać, to na nic Ci to niepotrzebne. Średnik też należy do exeka, dlatego jego wywalasz również.

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Find ? -exec {}
« Odpowiedź #2 dnia: 2009-03-22, 16:34:56 »
man find:

-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  wycytowania
    (znakiem `\\') aby uchronić je przed rozwinięciem przez powłokę.
    Polecenie jest wykonywane w katalogu startowym.
Łatwo zauważyć więc, że to polecenie po prostu uruchamia każdy znaleziony plik (bez przekazania żadnych argumentów). Pliki te muszą mieć atrybut wykonywalności (+x), inaczej pojawi się komunikat błędu.

anulka2009

  • Gość
Find ? -exec {}
« Odpowiedź #3 dnia: 2009-03-22, 16:36:31 »
ok, to jeśli teraz chcę usunąć wszystkie pliki .*txt to robię to tak:

find . -name "*.txt" -exec rm{} ';'
Zgadza się ??

arctgx

  • Gość
Find ? -exec {}
« Odpowiedź #4 dnia: 2009-03-22, 17:06:58 »
Zależnie czy chcesz usuwać z zapytaniem, czy odgórnie bez, to z -f albo z -i: rm -i {}. Inny sposób na pytanie to -ok zamiast -exec.

anulka2009

  • Gość
Find ? -exec {}
« Odpowiedź #5 dnia: 2009-03-22, 20:09:09 »
Dziękuję