Pesquisando em Múltiplos Arquivos
Em cenários do mundo real, você frequentemente precisa pesquisar em vários arquivos. O comando grep facilita isso, permitindo que você especifique vários arquivos ou use wildcards (coringas).
Vamos criar mais alguns arquivos para trabalhar:
echo "Linux is a free and open-source operating system." > ~/project/grep_lab/os.txt
echo "Unix was developed in the 1970s at Bell Labs." >> ~/project/grep_lab/os.txt
echo "Many modern operating systems are Unix-like." >> ~/project/grep_lab/os.txt
echo "The command line is a text interface for your computer." > ~/project/grep_lab/commands.txt
echo "Basic commands include ls, cd, grep, and find." >> ~/project/grep_lab/commands.txt
echo "Learning Linux commands increases productivity." >> ~/project/grep_lab/commands.txt
Pesquisando em Arquivos Específicos
Para pesquisar em vários arquivos, basta listá-los após o padrão:
grep "Linux" ~/project/grep_lab/sample.txt ~/project/grep_lab/os.txt ~/project/grep_lab/commands.txt
A saída incluirá o nome do arquivo antes de cada linha correspondente:
/home/labex/project/grep_lab/sample.txt:Welcome to Linux pattern searching.
/home/labex/project/grep_lab/sample.txt:Learning grep is essential for any Linux user.
/home/labex/project/grep_lab/os.txt:Linux is a free and open-source operating system.
/home/labex/project/grep_lab/commands.txt:Learning Linux commands increases productivity.
Usando Wildcards (Coringas)
Você pode usar wildcards para pesquisar em vários arquivos com nomes semelhantes:
grep "command" ~/project/grep_lab/*.txt
Isso pesquisa por "command" em todos os arquivos .txt no diretório grep_lab:
/home/labex/project/grep_lab/commands.txt:The command line is a text interface for your computer.
/home/labex/project/grep_lab/commands.txt:Basic commands include ls, cd, grep, and find.
/home/labex/project/grep_lab/sample.txt:The grep command helps find specific patterns in text files.
Pesquisa Recursiva
Para pesquisar em todos os arquivos dentro de um diretório e seus subdiretórios, use a opção -r:
Vamos criar um subdiretório com um arquivo:
mkdir -p ~/project/grep_lab/subdir
echo "Linux commands are powerful tools for file management." > ~/project/grep_lab/subdir/tools.txt
Agora, vamos fazer uma pesquisa recursiva:
grep -r "Linux" ~/project/grep_lab/
Isso pesquisará por "Linux" em todos os arquivos dentro do diretório grep_lab e seus subdiretórios.
Exibindo Apenas Nomes de Arquivos
Se você deseja apenas ver quais arquivos contêm uma correspondência (e não as linhas correspondentes em si), use a opção -l:
grep -l "Linux" ~/project/grep_lab/*.txt
Isso exibirá apenas os nomes dos arquivos que contêm correspondências:
/home/labex/project/grep_lab/commands.txt
/home/labex/project/grep_lab/os.txt
/home/labex/project/grep_lab/sample.txt
Tente combinar essas técnicas com as opções que você aprendeu na etapa anterior. Por exemplo, para encontrar todos os arquivos contendo "linux" (sem distinção entre maiúsculas e minúsculas) e exibir apenas seus nomes:
grep -il "linux" ~/project/grep_lab/*.txt