Nowe posty

Autor Wątek: Praca nad plikami znalezionymi findem.  (Przeczytany 3398 razy)

thamiar

  • Gość
Praca nad plikami znalezionymi findem.
« dnia: 2011-06-12, 17:29:50 »
Mam problem.
Otóż linijka
find /root/serwer -name "*.b" -print
Wyświetla mi wszystkie pliki z zakończeniem b i wyświetla je na ekranie.
Teraz chciałbym, by każdy znaleziony plik *.b zawierający w sobie tekst "Updejt"
został poddany pewnej przeróbce. Niestety nie za bardzo mam pojęcie jak to zrobić
find /root/serwer -name "*.b" -print -exec if[ "$(cat /root/serwer/*.b)" = "update" ] ; then (obróbka) fi
Oczywiście zgodnie z oczekiwaniami nie zadziałało ;) Próbowałem też z xargsem, ale kiepsko wychodzi.
Mógłby ktoś jakoś naprowadzić?

Offline guziec_z_afryki

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Praca nad plikami znalezionymi findem.
« Odpowiedź #1 dnia: 2011-06-12, 19:41:56 »
obrobka $(grep -l Updejt $(find /root/serwer -name "*.b" -print))
np:
ls -l $(grep -l Updejt $(find /root/serwer -name "*.b" -print))

thamiar

  • Gość
Praca nad plikami znalezionymi findem.
« Odpowiedź #2 dnia: 2011-06-12, 21:42:19 »
Nie wiem czy dobrze rozumiem. Tworzę funkcje o nazwie obróbka, a potem odpalam ją w programie pod postacią:

obrobka $(grep -l Updejt $(find /root/serwer -name "*.b" -print))
Czyli odpala się przy każdym znalezionym pliku?

Offline guziec_z_afryki

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Praca nad plikami znalezionymi findem.
« Odpowiedź #3 dnia: 2011-06-12, 22:41:20 »
Nie, założyłem że "obrobka" to nazwa twojego programu (czy skryptu) do - jak napisałeś "obróbki" plików podanych jako lista argumentów. Piszesz że pliki które cię interesują  to te kończące się na "*.b" i zawierające słowo "Updejt" - ale nie napisałeś co chcesz z nimi robić.
np ta komenda przekopiuje je do katalogu /tmp/kopia:
cp -av $(grep -l Updejt $(find /root/serwer -name "*.b" -print)) /tmp/kopia

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Praca nad plikami znalezionymi findem.
« Odpowiedź #4 dnia: 2011-06-12, 23:27:18 »
Ja tam wole przejrzyściej:

while read plik; do
  echo ${plik}
done < <( find /root/serwer -name '*.b' | grep 'Updejt' )

Offline guziec_z_afryki

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Praca nad plikami znalezionymi findem.
« Odpowiedź #5 dnia: 2011-06-12, 23:42:46 »
Tylko w tym przykładzie grep nie wyfiltruje plików ze słowem 'Updejt' w treści, tylko w nazwie, a chyba nie o to chodziło.

thamiar

  • Gość
Praca nad plikami znalezionymi findem.
« Odpowiedź #6 dnia: 2011-06-13, 13:42:04 »
Dziękuje ślicznie Turox.pl za pomoc i poświęcony czas!