Vyhledávání na webu

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ý způsob, jak to vyřešit, je pomocí 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 vypíše seznam všech souborů obsahujících řádek s textem „check_root“ pomocí rekurzivního a agresivního prohledávání adresáře ~/bin.

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

Kde volba -R říká grep, aby četl 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< mu dává pokyn, aby vybral 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žít 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 volbu -i, jak je znázorněno:

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

Pokud chcete znát přesný řádek, kde se řetězec textu nachází, zahrňte volbu -n.

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í volby --include.

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

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.