Chciałbym znaleźć pliki źródłowe (* .c, * .cpp, * .h), które zawierają Linux / MinGW / Cygwin i rekurencyjnie we wszystkich podkatalogach.
Moim podstawowym pomysłem jest używanie find
i grep
. Jednak zbudowanie wyrażenia regularnego, które może sprawdzić podaną nazwę pliku to * .c, * .cpp lub * .h nie jest łatwe. Czy możesz mi pomóc?
$
pod koniec polecenia?foo.cpp.old
na przykład).Użyłbym:
źródło
-E
niczego nie może znaleźć. możesz potrzebować dodać -E (jako rozszerzenie), aby uczynić go bardziej przenośnym, tak jakfind -E . -regex '.*\.(c|h|cpp)' -print
. ;-)Szybki i brudny i pozwala uniknąć nazw katalogów:
źródło
*.cpp
plików. 2. Znajdzie*.|
pliki. 3. Glob rozszerzy się, jeśli w bieżącym katalogu znajdują się pasujące pliki. Cytowanie temu zapobiega.Możesz użyć nieco prostszego wyrażenia regularnego:
źródło
Używam Mac Pro, który działa również w bash. Ale za każdym razem, gdy wpisuję w wierszu polecenia:
mówi nielegalna opcja. Po prostu uprościłem to jako:
i okazało się, że to naprawdę działało!
źródło