Przeszukuję repozytorium Git i chcę dołączyć ten .git
folder.
grep
nie zawiera tego folderu, jeśli uruchomię
grep -r search *
Jakie byłoby polecenie grep, aby uwzględnić ten folder?
Przeszukuję repozytorium Git i chcę dołączyć ten .git
folder.
grep
nie zawiera tego folderu, jeśli uruchomię
grep -r search *
Jakie byłoby polecenie grep, aby uwzględnić ten folder?
Odpowiedzi:
Zapoznaj się z rozwiązaniem na końcu tego postu jako lepszą alternatywą dla tego, co robisz.
Możesz jawnie dołączyć ukryte pliki (katalog jest również plikiem).
grep -r search * .*
*
Dopasuje wszystkie pliki z wyjątkiem tych ukrytych i .*
będzie pasować tylko ukryte pliki. Jednak zakończy się to niepowodzeniem, jeśli w danym katalogu nie ma plików nieukrytych lub plików ukrytych. Możesz oczywiście wyraźnie dodać .git
zamiast .*
.
Jeśli jednak chcesz po prostu przeszukać dany katalog, zrób to w ten sposób:
grep -r search .
.
Dopasuje bieżącą ścieżkę, która będzie obejmować zarówno non-ukryte i ukryte pliki.
.*
obejmie katalogu nadrzędnego (bo ..
mecze)
Właśnie napotkałem ten problem i na podstawie odpowiedzi @ bitmask, oto moja prosta modyfikacja, aby uniknąć problemu wskazanego przez @sehe:
grep -r search_string * .[^.]*
sudo grep -r ANDROID_HOME * .[^.]*
co robię źle tutaj?
Być może wolisz połączyć "grep" z poleceniem "find", aby uzyskać kompletne rozwiązanie, takie jak:
find . -exec grep -Hn search {} \;
To polecenie wyszuka w ukrytych plikach lub katalogach ciąg „szukaj” i wyświetli listę wszystkich plików, które są zgodne z następującym formatem wyjściowym:
Ścieżka pliku: Numer wiersza: wiersz z koincydencją
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
Możesz użyć tego podejścia, zakładając, że przeszukujesz bieżący katalog (w przeciwnym razie zamień. Na żądany katalog):
find . -type f | xargs grep search
lub jeśli chcesz po prostu wyszukiwać na najwyższym poziomie (co jest szybsze do przetestowania, jeśli je wypróbowujesz):
find . -type f -maxdepth 1 | xargs grep search
AKTUALIZACJA: zmodyfikowałem przykłady w odpowiedzi na komentarze Scotta. Dodałem również „-type f”.
~
to katalog domowy użytkownika. Pytanie nie dotyczyło katalogu domowego użytkownika, więc odpowiedź nie powinna wspominać ~
. (2) W find
poleceniu -name '*'
nie działa (tj. Nie służy celowi).
Aby przeszukać TYLKO wszystkie ukryte pliki i katalogi z Twojej bieżącej lokalizacji:
find . -name ".*" -exec grep -rs search {} \;
TYLKO wszystkie ukryte pliki:
find . -name ".*" -type f -exec grep -s search {} \;
TYLKO wszystkie ukryte katalogi:
find . -name ".*" -type d -exec grep -rs search {} \;
Aby znaleźć tylko w określonym folderze, możesz użyć:
ls -al | grep " \."
Wyświetlenie listy i potokowanie do grep jest bardzo prostym poleceniem.
Oprócz sugestii Tylera, oto polecenie grepowania rekurencyjnie wszystkich plików i folderów, w tym plików ukrytych
find . -name "*.*" -exec grep -li 'search' {} \;