===== Exemplos dos comandos grep e find =====
==== Nível Básico ====
* **Procurar por uma palavra específica em um arquivo com `grep`:**
- grep "palavra" arquivo.txt
- Busca pela palavra "palavra" no arquivo `arquivo.txt` e exibe as linhas que contêm a correspondência.
* **Buscar arquivos por nome em um diretório com `find`:**
- find /caminho -name "arquivo.txt"
- Procura o arquivo `arquivo.txt` no diretório especificado.
* **Buscar por uma palavra ignorando maiúsculas e minúsculas com `grep`:**
- grep -i "palavra" arquivo.txt
- Realiza a busca pela palavra "palavra" no arquivo `arquivo.txt`, ignorando a distinção entre maiúsculas e minúsculas.
* **Buscar arquivos em subdiretórios com `find`:**
- find /caminho -type f -name "*.txt"
- Procura todos os arquivos com a extensão `.txt` dentro do diretório `/caminho` e seus subdiretórios.
==== Nível Intermediário ====
* **Contar o número de ocorrências de uma palavra em um arquivo com `grep`:**
- grep -c "palavra" arquivo.txt
- Conta quantas vezes a palavra "palavra" aparece em `arquivo.txt`.
* **Buscar arquivos modificados nos últimos 7 dias com `find`:**
- find /caminho -type f -mtime -7
- Procura por arquivos modificados nos últimos 7 dias no diretório `/caminho`.
* **Buscar por uma palavra em múltiplos arquivos de uma só vez com `grep`:**
- grep "palavra" *.txt
- Procura por "palavra" em todos os arquivos `.txt` no diretório atual.
* **Executar um comando em cada arquivo encontrado com `find`:**
- find /caminho -name "*.log" -exec rm {} \;
- Encontra e remove todos os arquivos `.log` no diretório `/caminho`.
==== Nível Avançado ====
* **Buscar por uma palavra e mostrar o número das linhas com `grep`:**
- grep -n "palavra" arquivo.txt
- Exibe as linhas onde a palavra "palavra" aparece, junto com o número da linha.
* **Buscar por arquivos maiores que 100 MB com `find`:**
- find /caminho -type f -size +100M
- Procura arquivos maiores que 100 MB no diretório `/caminho`.
* **Buscar por uma palavra em arquivos recursivamente com `grep`:**
- grep -r "palavra" /caminho
- Busca pela palavra "palavra" em todos os arquivos e subdiretórios de `/caminho`.
* **Procurar arquivos por tipo e nome simultaneamente com `find`:**
- find /caminho -type f -name "*.txt" -or -name "*.log"
- Encontra arquivos com a extensão `.txt` ou `.log` no diretório `/caminho`.
==== Nível Especializado ====
* **Buscar por várias palavras ao mesmo tempo com `grep`:**
- grep -E "palavra1|palavra2" arquivo.txt
- Usa expressões regulares para buscar "palavra1" **ou** "palavra2" em `arquivo.txt`.
* **Executar um comando em arquivos com base em múltiplas condições com `find`:**
- find /caminho -type f -name "*.log" -size +50M -exec gzip {} \;
- Encontra todos os arquivos `.log` maiores que 50 MB e os compacta com `gzip`.
* **Buscar por linhas que não contêm uma palavra com `grep`:**
- grep -v "palavra" arquivo.txt
- Exibe todas as linhas do arquivo `arquivo.txt` que **não** contêm a palavra "palavra".
* **Localizar arquivos vazios e excluí-los com `find`:**
- find /caminho -type f -empty -delete
- Encontra e exclui todos os arquivos vazios no diretório `/caminho`.
* **Combinar `find` e `grep` para buscar por texto dentro de arquivos específicos:**
- find /caminho -name "*.log" -exec grep "erro" {} \;
- Encontra todos os arquivos `.log` no diretório `/caminho` e procura pela palavra "erro" dentro desses arquivos.
* **Buscar por arquivos modificados em uma data específica com `find`:**
- find /caminho -type f -newermt "2023-01-01"
- Encontra todos os arquivos modificados após 1 de janeiro de 2023.
* **Mostrar contexto ao redor das correspondências com `grep`:**
- grep -C 3 "palavra" arquivo.txt
- Exibe as 3 linhas antes e depois de cada ocorrência da palavra "palavra" em `arquivo.txt`.
* **Buscar e substituir texto em múltiplos arquivos com `find` e `sed`:**
- find /caminho -name "*.txt" -exec sed -i 's/palavra_antiga/palavra_nova/g' {} \;
- Encontra todos os arquivos `.txt` e substitui todas as ocorrências de "palavra_antiga" por "palavra_nova".