Próbuję znaleźć katalog instalacyjny określonego pakietu. Mam określone słowo kluczowe, za pomocą którego próbuję znaleźć określony plik.
Podczas grep chcę tylko dołączyć typ pliku cpp lub h . Nie chcę, aby grep wyświetlał ostrzeżenia, takie jak Odmowa dostępu lub Nie można znaleźć katalogu . Chcę tylko, żeby wyświetlał dopasowane pliki, nic więcej. Proszę zasugerować, jak mogę to zrobić?
Obecnie używam
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
Bardziej bezpośrednio niż filtrowanie ostrzeżeń można je wyłączyć, dodając
-s
:Istnieją pewne problemy ze zgodnością z tą opcją. Nie powinno to jednak stanowić problemu do użytku osobistego.
źródło
Zwykle otrzymywałem mnóstwo irytujących wiadomości:
Powodem jest to, że
--directories
flaga jest domyślnie ustawiona naread
. Zmieniłem to narecurse
; jeśli nie chcesz, aby automatycznie przeprowadzało wyszukiwanie rekurencyjne, możeszskip
zamiast tego użyć .Najłatwiejszym sposobem radzenia sobie z tym przez cały czas jest ustawienie jej w zmiennej środowiskowej. W
~/.bash_profile
lub~/.bashrc
w zależności od dystrybucji:Teraz automatycznie pomija te wiadomości za każdym razem, gdy używam grep.
Inną opcją jest
--no-messages
flaga, skrót-s
. Spowoduje to również pozbycie sięIs a directory
wiadomości, ale także pominie inne wiadomości, które mogą być bardziej przydatne. Na przykład, jeśli przeprowadzasz wyszukiwanie zagnieżdżone*/*/*
i nie istnieje taki plik tego wzorca, to ci to nie powie.źródło
Alternatywnym podejściem zamiast robić
grep
rekurencyjnie-ir
byłoby pozwoleniefind
komendzie (która domyślnie jest rekurencyjna) obsługiwać uprawnienia z-readable
flagą i ścieżkami do wykluczenia z-not -path "*.svn*"
flagami, a następnie przekazać plik dogrep
. Wykluczanie katalogów odbywa się poprzez-type f
wyszukiwanie tylko zwykłych plików.źródło
Podczas wyszukiwania rekurencyjnego w określonych plikach lepiej jest używać
ack-grep
. Oto składnia:Aby usunąć komunikaty o błędach uprawnień, możesz uruchomić to samo polecenie z
sudo
:Ale ostatecznie, jeśli chcesz przeszukać zainstalowane pakiety, spójrz na te różne opcje: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages
źródło