Jak mogę łączyć find
i grep
wyszukiwać str1
lub str2
rekurencyjnie we wszystkich plikach * .html i * .php, zaczynając od katalogu o nazwie / home / smith / source? Dane wyjściowe muszą tylko zawierać listę plików (ze ścieżką), a nie rzeczywisty dopasowany ciąg. wypróbowałem wiele odmian bez powodzenia. Istnieje wiele przykładów tego, jak to zrobić dla jednego wzorca pliku lub jednego ciągu, ale nie dla wielu wzorów plików i wielu ciągów - rekurencyjnie .
find /home/smiths/source -type f -regextype posix-egrep -regex ".*\.(php|html)$" -exec egrep -H -n "str1|str2|str3" '{}' \;
Jeśli używasz
ack
(patrz http://beyondgrep.com ), możesz to zrobić:źródło
Nie zapominaj, że twoja powłoka jest o wiele wygodniejsza niż
find
gdybyś tylko szukał plików według nazwy!Grzmotnąć:
Ryba:
źródło