Thamiar Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 Mam problem. Otóz linijka find /root/serwer -name "*.b" -print Wyswietla mi wszystkie pliki z zakonczeniem b i wyswietla je na ekranie. Teraz chcialbym, by kazdy znaleziony plik *.b zawierajacy w sobie tekst "Updejt" zostal poddany pewnej przeróbce. Niestety nie za bardzo mam pojecie jak to zrobic find /root/serwer -name "*.b" -print -exec if[ "$(cat /root/serwer/*." = "update" ] ; then (obróbka) fi Oczywiscie zgodnie z oczekiwaniami nie zadzialalo Próbowalem tez z xargsem, ale kiepsko wychodzi. Móglby ktos jakos naprowadzic? Pozdrawiam! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 Możesz grepem (plik | grep update), sprawdzić czy występuje słowo. Jeśli zwróci niepusty String to obróbka. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 grep jest na tyle fajnym narzędziem, że zwraca status 1, gdy nie było dopasowania, lub 0 - jeśli dopasowanie było. Parametr -exec polecenia find wykonuje się tylko wtedy, jeśli wszystko, co jest na lewo od niego, zakończyło się sukcesem. Możesz więc zrobić coś takiego: find /root/serwer -name "*.b" -print -exec grep -q "update" "{}" \; -exec obrobka \; Jak to działa? Najpierw find wyszukuje pliki o rozszerzeniu .b. Następnie wypisuje je (-print). Następnie wykonuje polecenie grep. Parametr -q jest parameterem grepa i oznacza on, że grep nie wypisuje nic na wyjście. Jedynie będziemy mieli informację czy ciąg znaków został znaleziony, czy nie. "{}" to jest miejsce, które find zastępuje nazwą pliku. Średnik \; (musi być escape'owany!) oznacza koniec parametrów dla -exec. Następnie jest kolejne -exec, które wykona się TYLKO wtedy, gdy poprzednie -exec zakończyło się sukcesem. Czyli może robić obróbkę. Mam nadzieję, że wszystko jest jasne 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 $ find . | while read -r line ; do echo Co kto komu w duszy gra $line co kto w swoich widzi snach done ...dla mnie tak jest bardziej przejrzyście Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Thamiar Napisano Czerwiec 13, 2011 Autor Zgłoszenie Share Napisano Czerwiec 13, 2011 Bardzo dziękuje za pomoc, zarówno Ecik__ jak i za porady Borzola i Thofa Chyba działa, przynajmniej na razie;) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się