Często używaj tego:
grep
może być używany w połączeniu z -r
(rekurencyjne), i
(ignoruj wielkość liter) i -o
(drukuje tylko pasującą część linii). Aby wykluczyć files
użycie --exclude
i aby wykluczyć użycie katalogów --exclude-dir
.
Podsumowując, otrzymujesz coś takiego:
grep -rio --exclude={filenames comma separated} \
--exclude-dir={directory names comma separated} <search term> <location>
Jego opis sprawia, że brzmi o wiele bardziej skomplikowane niż jest w rzeczywistości. Łatwiej to zilustrować prostym przykładem.
Przykład:
Załóżmy, że szukam bieżącego projektu dla wszystkich miejsc, w których jawnie ustawiam wartość debugger
ciągu podczas sesji debugowania, a teraz chcę przejrzeć / usunąć.
Piszę skrypt o nazwie findDebugger.sh
i używam grep
do znalezienia wszystkich wystąpień. Jednak:
W przypadku wykluczeń plików - chciałbym się upewnić, że .eslintrc
zostanie zignorowany (w rzeczywistości jest to reguła podszywania się, debugger
dlatego należy go wykluczyć). Podobnie nie chcę, aby mój skrypt zawierał odwołania w jakichkolwiek wynikach.
Wyłączenia katalogów - chcę wykluczyć, node_modules
ponieważ zawiera wiele bibliotek, które zawierają odwołania debugger
i nie jestem zainteresowany tymi wynikami. Chciałbym też pominąć .idea
i .git
ukryć katalogi, ponieważ nie dbam też o te lokalizacje wyszukiwania i chcę zachować skuteczność wyszukiwania.
Oto wynik - tworzę skrypt o nazwie findDebugger.sh
:
#!/usr/bin/env bash
grep -rio --exclude={.eslintrc,findDebugger.sh} \
--exclude-dir={node_modules,.idea,.git} debugger .