2013-01-02 12 views

Odpowiedz

11

Tak. grep "a certain string" 200901*/*.csv.

5

Trzeba coś takiego:

grep NEEDLE 200901*/*.csv 

(zakładając szukania ciąg jest NEEDLE oczywiście - wystarczy zmienić go na cokolwiek jesteś faktycznie szukasz).

Powłoka bash jest w stanie rozwinąć wielopoziomowe ścieżki i nazwy plików.

To oczywiście ogranicza się tylko do plików CSV po jednym katalogu. Jeśli chcesz przeszukać całe poddrze, musisz użyć komendy łatwej do zmieniania (i przystosowania) w niewielkim trybie: find.

Chociaż, zakładając, że można ustawić limit na głębokości, można uciec z czymś (na trzy poziomy):

grep NEEDLE 200901*/*.csv 200901*/*/*.csv 200901*/*/*/*.csv 
+0

Albo, możesz [ustawić globstara i użyć **] (http://wiki.bash-hackers.org/internals/shell_options#globstar) –

4

Spróbuj tego:

grep -lr "Pattern" 200901*/*.csv 
0

spróbować połączenie znajdź, aby wyszukać określone wzorce nazw plików i grep, aby znaleźć wzór:

find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE"