Jak znaleźć wszystkie pliki z określonym tekstem za pomocą Linux Shell

Jak znaleźć wszystkie pliki z określonym tekstem za pomocą Linux Shell

Cel

Poniższy artykuł zawiera kilka przydatnych wskazówek na temat znalezienia wszystkich plików w dowolnym konkretnym katalogu lub całym systemie plików zawierających dowolne określone słowo lub ciąg.

Trudność

ŁATWY

Konwencje

  • # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Przykłady

Znajdź wszystkie pliki z określonym ciągiem nie-rekurencyjnym

Pierwszy przykład polecenia poszukiwał ciągu rozciągać się we wszystkich plikach wewnątrz /itp/ katalog, wykluczając wszelkie podwodne:

# grep -s stretch/etc/*/etc/OS-Rurease: Pretten_name = "Debian Gnu/Linux 9 (rozciąganie)"/etc/os-emerease: version = "9 (stretch)" 

-S Opcja GREP będzie tłumiła komunikaty o błędach na temat nieistniejących lub nieczytelnych plików. Wyjście pokazuje nazwy plików, a także drukuje rzeczywistą linię zawierającą żądany ciąg.



Znajdź wszystkie pliki z określonym ciągiem rekurencyjnym

Powyższe polecenie pominęło wszystkie podwodne. Wyszukiwanie rekurencyjnie oznacza również przemierzanie wszystkich substaterejnych. Następujące polecenie Linux będzie wyszukiwać ciąg rozciągać się we wszystkich plikach wewnątrz /itp/ Katalog, w tym wszystkie podwodnione:

# grep -r rozciąganie/etc/*/etc/apt/źródła.Lista:# Deb CDROM: [Testowanie Debian GNU/Linux _stretch_-Oficjalna migawka AMD64 Netinst Binary-1 20170109-05: 56]/Stretch Main/Etc/Apt/APT/źródła/źródła.Lista: #DEB CDROM: [Testowanie Debian GNU/Linux _stretch_-Oficjalna migawka AMD64 Netinst Binary-1 20170109-05: 56]/Stretch Main/Etc/Apt/Apt/źródła.Lista: Deb http: // ftp.au.Debian.org/debian/stretch main/etc/apt/źródła.Lista: Deb-src http: // ftp.au.Debian.org/debian/stretch main/etc/apt/źródła.Lista: Deb http: // bezpieczeństwo.Debian.Org/Debian-Security Stretch/Aktualizacje główne/etc/apt/źródła.Lista: Deb-src http: // bezpieczeństwo.Debian.Org/debian-security Stretch/Aktualizacje Main/etc/Dictionaries-Common/Words: Backstretch/etc/Dictionaries-Common/Words: Backstretch's/etc/Dictionaries-Common/Words: Backstretches/Etc/Dictionaries-Common/Words: Homestretch/Words: Homestretch/ ETC/Dictionaries-Common/Words: Homestretch's/etc/Dictionaries-common/Words: Homestretches/etc/Dictionaries-common/Words: wyciąga/etc/Dictionaries-common/Words: wyciągnięte/etc/dictionaries-common/słowa ETC/Dictionaries-common/Words: wyciąganie/etc/słownik-common/słowa: stretch/etc/słownik-common/słowa: stretch's/etc/dictionaries-common/słów: rozciągnięte/etc/dictionaries-common/słowa: strepeting/elmeni ETC/Dictionaries-common/Words: nosza/etc/słownik-common/słowa: nosze/etc/słowniki-common/słów: rozciąganie/etc/słowniki-common/słowa: elastyk/etc/dictionaries-common/słowa: elastyk/ itp./Słowniki-common/słowa:rozciąganie/etc/słowniki-common/słowa: elastyczne/etc/grub.D/00_HEADER: TAEL_IMAGE -M stretch 'Make_System_Path_relative_to_its_root "$ Grub_background"'/etc/Os-Release: Pretty_name = "Debian GNU/Linux 9 (stretch)"/etc/OS-Rlease: wersja = "9 (rozciąganie)" 


Wyszukaj wszystkie pliki zawierające określone słowo

Powyższe Grep Przykład polecenia wymienia wszystkie pliki zawierające ciąg rozciągać się. Co oznacza linie z rozciąga się, rozciągnięty itp. są również pokazane. Użyj Grepa -w Opcja pokazania tylko konkretnego słowa:

# GREP -RW stretch/etc/*/etc/apt/źródła.Lista:# Deb CDROM: [Testowanie Debian GNU/Linux _stretch_-Oficjalna migawka AMD64 Netinst Binary-1 20170109-05: 56]/Stretch Main/Etc/Apt/APT/źródła/źródła.Lista: #DEB CDROM: [Testowanie Debian GNU/Linux _stretch_-Oficjalna migawka AMD64 Netinst Binary-1 20170109-05: 56]/Stretch Main/Etc/Apt/Apt/źródła.Lista: Deb http: // ftp.au.Debian.org/debian/stretch main/etc/apt/źródła.Lista: Deb-src http: // ftp.au.Debian.org/debian/stretch main/etc/apt/źródła.Lista: Deb http: // bezpieczeństwo.Debian.Org/Debian-Security Stretch/Aktualizacje główne/etc/apt/źródła.Lista: Deb-src http: // bezpieczeństwo.Debian.Org/Debian-Security Stretch/Aktualizacje Main/etc/Dictionaries-Common/Words: Stretch/Etc/Dictionaries-Common/Words: Stretch's/Etc/Grub.D/00_HEADER: TAEL_IMAGE -M stretch 'Make_System_Path_relative_to_its_root "$ Grub_background"'/etc/Os-Release: Pretty_name = "Debian GNU/Linux 9 (stretch)"/etc/OS-Rlease: wersja = "9 (rozciąganie)" 

Wypisz tylko nazwy plików zawierających określony tekst

Powyższe polecenia mogą wytworzyć niepotrzebne wyjście. Następny przykład wyświetli tylko wszystkie nazwy plików zawierające ciąg rozciągać się w /itp/ Directory rekurencyjnie:

# grep -rl stretch/etc/*/etc/apt/źródła.Lista/etc/słownik-common/słowa/etc/grub.d/00_header/etc/OS-Rulease 

Wykonaj wyszukiwanie wrażliwe na przypadki

Wszystkie wyszukiwania są domyślnie wrażliwe na literę, co oznacza, że ​​każde wyszukiwanie ciągu rozciągać się wyświetli tylko pliki zawierające dokładne wielkie i małe dopasowanie. Za pomocą Grep's -I Opcja polecenie będzie również wymienić dowolne wiersze zawierające Rozciągać się, ROZCIĄGAĆ SIĘ, Rozciągać się itp., stąd przeprowadzanie wyszukiwania wrażliwych na przypadki.

# grep -ril stretch/etc/*/etc/apt/źródła.Lista/etc/słownik-common/default.Hash/etc/Dictionaries-common/Words/etc/Grub.d/00_header/etc/OS-Rulease 


Uwzględnij lub wyklucz określone nazwy plików z wyszukiwania

Za pomocą Grep polecenie można również dołączyć tylko określone pliki w ramach wyszukiwania. Na przykład chcielibyśmy wyszukać określony tekst/ciąg w plikach konfiguracyjnych z rozszerzeniem .conf. Następny przykład znajdzie wszystkie pliki z rozszerzeniem .conf w /itp katalog zawierający ciąg grzmotnąć:

# grep -ril bash /etc /*.conf lub # grep -ril --include = \*.conf bash /etc /* /etc /adduser.conf 

Podobnie, używając --wykluczać Opcja możemy wykluczyć dowolne określone nazwy plików:

# grep -ril --exclude = \*.CONF BASH/ETC/*/ETC/alternative/view/etc/alternative/vim/etc/alternative/vi/etc/alternative/vimdiff/etc/alternatywy/rvim/etc/alternatywy/ex/etc/alternatywy/rview/etc/etc/etc/etc/etc /grzmotnąć.bashrc /etc /bash_complecja.D/Grub/etc/cron.codziennie/apt-compat/etc/cron.codziennie/exim4-baza/etc/słownik.hash/etc/dictionaries-common/słów/etc/inputrc/etc/passwd/etc/passwd-/etc/profilu/etc/powtórki/etc/skel/.profil/etc/skel/.bashrc/etc/skel/.bash_logout 

Wyklucz określone katalogi z wyszukiwania

Tak samo jak w przypadku plików GREP może również wykluczyć określone katalogi z wyszukiwania. Używać --Wykluczona Opcja wykluczenia katalogu z wyszukiwania. Poniższy przykład wyszukiwania znajdzie wszystkie pliki zawierające ciąg rozciągać się w /itp katalog i wyklucz /etc/grub.D Z wyszukiwania:

# grep-exclude-dir =/etc/grub.d -rwl stretch/etc/*/etc/apt/źródła.Lista/etc/słownik-common/słów/etc/OS-Rulease 

Wyświetl numer linii zawierający wyszukiwany ciąg

Używając -N Opcja GREP dostarczy również informacji dotyczących numeru linii, w którym znaleziono określony ciąg:

# grep -rni bash /etc /*.conf /etc /adduser.Conf: 6: dshell =/bin/bash 

Znajdź wszystkie pliki nie zawierające określonego ciągu

Ostatni przykład użyje -v Opcja wymienienia wszystkich plików nie zawierających określonego słowa kluczowego. Na przykład następujące wyszukiwanie będzie wymienić wszystkie pliki w środku /itp/ katalog, który nie zawiera ciągów rozciągać się:

# grep -rlv stretch /etc /* 

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Podstawowe polecenia Linux
  • Jak znaleźć ciąg lub tekst w pliku w Linux
  • Jak poprawnie grep do tekstu w skryptach bash
  • Znajdź wszystkie pliki zawierające określony tekst
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak wydrukować drzewo katalogu za pomocą Linux
  • Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 4
  • Przydatne przykłady i sztuczki