Forum Linux.pl

Inne => Tips & Tricks => Wątek zaczęty przez: plus150 w 2015-09-29, 07:40:18

Tytuł: Znajdź w plikach i skasuj całą linię
Wiadomość wysłana przez: plus150 w 2015-09-29, 07:40:18
Witam, bardzo proszę o pomoc w takiej sprawie:

Chciałbym znaleźć wszystkie pliki *.php w katalogu /home zawierające ciąg znaków:

bd26efa2f27f70847ba9a8619d6a3a5c

I znalazłem świetnie działające polecenie:

grep -r "_transient_feed_bd26efa2f27f70847ba9a8619d6a3a5c" *


Następnie chiałbym usunąć wszystkie linie zawierające w/w ciąg znaków. Takie polecenie dziala bardzo ladnie:

sed -i '/bd26efa2f27f70847ba9a8619d6a3a5c/d' *.php

Ale to ostatnie polecenie działa tylko w katalogu w którym jestem i nie szuka w podkatalogach. Potrzebne jest rozwiązanie aby to ostatnie polecenie wykonało pracę w całym podkatalogu /home na plikach *.php

Pomoże ktoś?

Znalazłem rozwiązanie:

grep -rl "bd26efa2f27f70847ba9a8619d6a3a5c" * -R | xargs sed -i '/bd26efa2f27f70847ba9a8619d6a3a5c/d'

Ale jak zrobić aby przeszukiwał tylko katalogi public_html w katalogu /home ?


Dziękuję

Krzysztof
Tytuł: Odp: Znajdź w plikach i skasuj całą linię
Wiadomość wysłana przez: alvaro w 2015-09-29, 16:57:15
Dla bieżącego użytkownika:
find ~/public_html/ -iname '*.php' | xargs sed -i '/bd26efa2f27f70847ba9a8619d6a3a5c/d'

Dla wszystkich użytkowników:
find /home/*/public_html/ -iname '*.php' | xargs sed -i '/bd26efa2f27f70847ba9a8619d6a3a5c/d'
Tytuł: Odp: Znajdź w plikach i skasuj całą linię
Wiadomość wysłana przez: plus150 w 2015-09-29, 18:56:11
O widzisz :) Tego mi było trzeba.

Dziękuję.