Pesquisando conteúdo de arquivos - Série Linux
Tags: ubuntu, linux
Published: 2023-08-21 20:35:31

Muitas vezes quando estamos procurando um arquivo e queremos algo em seu conteudo usamos o comando **cat.** Porém esse mesmo comando nos da todo o conteúdo do arquivo e passamos muito tempo dando scroll no terminal para achar o que estamos procurando.

Para conseguirmos filtrar o conteúdo do arquivo, pesquisando o que estamos procurando, podemos utilizar o **grep**. Esse comando nos ajudar a pesquisar tanto em arquivos, diretórios e subdiretórios o conteúdo procurado.

**Exemplo de comando CAT.**

```bash
# cat [option] <filename>

cd ~                  # entramos na pasta home
mkdir cat-test        # criamos uma pasta teste
cd cat-test           # entramos na pasta teste
cp /etc/services .    # copiamos o arquivo services da nossa máquina
cat services          # usamos o cat para pegar o conteúdo do arquivo services

```

**Exemplo de comando GREP.**

```bash
# grep [option] <search-value> <where-to-look>

cd ~                 # entramos na pasta home
mkdir grep-test      # criamos uma pasta teste
cd grep-test         # entramos na pasta teste
cp /etc/services .   # copiamos o arquivo services da nossa máquina.
cp /etc/passwd .     # copiamos o arquivo passwd da nossa máquina.
grep http *          # pesquisamos http em qualquer arquivo do diretório corrente.
										 # será listado o conteúdo dos arquivos que tem a palavra http. 
```

## Options

Logo após escrevermos o nome do comando, podemos colocar uma de suas opções de execução e aqui serão descritas algumas dessas opções (-i -l -L -r).

### -i | --ignore-case

Essa opção faz com que a pesquisa do grep ignore o case sensitive (case insensitive).

```bash
# grep [option] <search-value> <where-to-look>

cd ~                # entramos na pasta home
mkdir grep-test     # criamos uma pasta teste
cd grep-test        # entramos na pasta teste
cp /etc/services .  # copiamos o arquivo services da nossa máquina.
cp /etc/passwd .    # copiamos o arquivo passwd da nossa máquina.
grep -i http *      # pesquisamos http em qualquer arquivo do diretório corrente.
										# será listado o conteúdo dos arquivos que tem a palavra http sem case sensitive.
```

### -l | --file-with-matches

Essa opção faz com que sejam listados os arquivos que contém o conteúdo procurado.

```bash
# grep [option] <search-value> <where-to-look>

cd ~                # entramos na pasta home
mkdir grep-test     # criamos uma pasta teste
cd grep-test        # entramos na pasta teste
cp /etc/services .  # copiamos o arquivo services da nossa máquina.
cp /etc/passwd .    # copiamos o arquivo passwd da nossa máquina.
grep -l http *      # pesquisamos http em qualquer arquivo do diretório corrente.
										# será listado os arquivos que tem o valor pesquisado.
```

### -L --files-without-match

Essa opção faz com que sejam listados os arquivos que não contém o conteúdo procurado.

```bash
# grep [option] <search-value> <where-to-look>

cd ~                # entramos na pasta home
mkdir grep-test     # criamos uma pasta teste
cd grep-test        # entramos na pasta teste
cp /etc/services .  # copiamos o arquivo services da nossa máquina.
cp /etc/passwd .    # copiamos o arquivo passwd da nossa máquina.
grep -L http *      # pesquisamos http em qualquer arquivo do diretório corrente.
										# será listado os arquivos que não tem o valor pesquisado.
```

### -r | --recursive

Essa opção faz com que o que for pesquisado, não se limite ao diretório corrente, mas que consiga pesquisar em subdiretórios.

```bash
# grep [option] <search-value> <where-to-look>

cd ~                             # entramos na pasta home
mkdir grep-test                  # criamos uma pasta teste
cd grep-test                     # entramos na pasta teste
cp /etc/services .               # copiamos o arquivo services da nossa máquina.
cp /etc/passwd .                 # copiamos o arquivo passwd da nossa máquina.
mkdir sub                        # criamos a pasta sub
cp /etc/services ./sub/          # copiamos novamente o arquivo services, mas agora para a pasta sub
grep -r http *                   # pesquisamos http em qualquer arquivo do diretório corrente e subdiretórios.
										             # será listado o conteúdo dos arquivos que tem o valor pesquisado, tanto arquivos do diretório atual quanto em subdiretórios.
```