GNU/Linux >> Znalost Linux >  >> Linux

Jak najít konkrétní řetězec nebo slovo v souborech a adresářích

Chcete najít všechny soubory, které obsahují určité slovo nebo řetězec textu v celém systému Linux nebo v daném adresáři? Tento článek vás provede, jak na to, dozvíte se, jak rekurzivně procházet adresáře, abyste našli a vypsali všechny soubory, které obsahují daný řetězec textu.

Jednoduchým způsobem, jak to vyřešit, je použití nástroje pro vyhledávání vzorů grep, což je výkonný, efektivní, spolehlivý a nejoblíbenější nástroj příkazového řádku pro vyhledávání vzorů a slov ze souborů nebo adresářů na systémech podobných Unixu.

Přečtěte si také :11 pokročilých linuxových příkazů „Grep“ pro třídy znaků a výrazy v závorkách

Níže uvedený příkaz zobrazí seznam všech souborů obsahujících řádek s textem „check_root ”, rekurzivním a agresivním prohledáváním ~/bin adresář.

$ grep -Rw ~/bin/ -e 'check_root'

Kde -R možnost říká grep číst všechny soubory v každém adresáři, rekurzivně, podle symbolických odkazů, pouze pokud jsou na příkazovém řádku a volbou -w přikazuje mu vybrat pouze ty řádky obsahující shody, které tvoří celá slova, a -e se používá k určení řetězce (vzoru), který se má prohledávat.

Příkaz sudo byste měli používat při prohledávání určitých adresářů nebo souborů, které vyžadují oprávnění root (pokud nespravujete svůj systém pomocí účtu root).

 
$ sudo grep -Rw / -e 'check_root'	

Chcete-li ignorovat rozlišení velkých a malých písmen, použijte -i možnost podle obrázku:

$ grep -Riw ~/bin/ -e 'check_root'

Chcete-li znát přesný řádek, kde řetězec textu existuje, vložte -n možnost.

$ grep -Rinw ~/bin/ -e 'check_root'

Za předpokladu, že v adresáři, ve kterém chcete hledat, je několik typů souborů, můžete také určit typ souborů, které se mají prohledávat, například podle jejich přípony pomocí --include možnost.

Tento příklad dává pokyn grep, aby prohlížel pouze všechny .sh soubory.

$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

Kromě toho je možné vyhledat více než jeden vzor pomocí následujícího příkazu.

$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

A je to! Pokud znáte nějaký další trik příkazového řádku k nalezení řetězce nebo slova v souborech, podělte se s námi nebo se zeptejte na jakékoli otázky týkající se tohoto tématu, použijte formulář pro komentáře níže.


Linux
  1. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  2. rekurzivní grep:vyloučení konkrétních adresářů

  3. Jak najít konkrétní slovo a uchopit text

  1. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  2. Jak rekurzivně vypsat všechny soubory a adresáře

  3. Jak najdu všechny soubory a adresáře, do kterých lze zapisovat konkrétním uživatelem?

  1. Jak vyhledávat v konkrétních souborech odpovídajících vzoru?

  2. Jak vypsat konkrétní typ souborů v rekurzivních adresářích v shellu?

  3. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?