a magnifying glass searching through text

Como encontrar arquivos no Linux: dominando os comandos Find e Grep

Neste artigo você aprenderá como localizar arquivos no Linux usando diferentes ferramentas.

O

Pesquisando por nome de arquivo

“Find” is one of the most popular tools to search files in Linux. When you know the file name you can search for it using command below. Replace “/home” with a folder to search through and “filename.txt” with the file name.

$ encontrar /home -nome nome do arquivo.txt

Para procurar um arquivo na pasta atual, substitua

$ encontrar. -nome Documentos.zip
./Documents.zip

Quando você não souber o nome exato do arquivo, use a expressão regular para procurar uma correspondência. O símbolo de asterisco (*) corresponde a qualquer conjunto de caracteres após o

$ find /home -name "Documentos*"
/home/eugene/Documents.zip
/home/eugene/Documentos
/home/eugene/Telefone/Documentos

Pesquisando pela data de modificação

Para procurar arquivos que foram modificados hoje, adicione

$ encontrar /home -mtime 0

Por exemplo, vamos encontrar fotos que foram modificadas há 10 dias:

$ encontrar imagens/ -mtime 10
Fotos / Capturas de tela / Captura de tela de 2023-11-03 10-29-49.png

Pesquisando por tipo de arquivo

O

Pesquisar diretórios: Para encontrar todos os diretórios em um caminho especificado, use a opção -type d.

$ encontrar /home -tipo d

Pesquisar arquivos regulares: Por outro lado, para localizar arquivos regulares, use a opção -type f.

$ encontrar /home -type f -name "*.txt"

Pesquise links simbólicos: Para procurar links simbólicos, utilize a opção -type l.

$ find /home -type l -name "linkname"

Pesquise extensões de arquivo específicas: Restrinja sua pesquisa especificando extensões de arquivo.

$ encontrar /home -type f -name "*.jpg"

Combinando Critérios

Você pode combinar vários critérios para tornar suas pesquisas mais precisas. Aqui

Procure arquivos modificados com uma extensão específica: Encontre arquivos modificados nos últimos 7 dias com a extensão

$ encontrar /var/logs -type f -name "*.log" -mtime -7

Pesquisar arquivos modificados entre um intervalo de datas: localize arquivos modificados entre 1º de novembro de 2023 e 5 de novembro de 2023.

$ encontrar /home -newermt 01/11/2023! -newermt 06/11/2023

Adicional

Ignorando a sensibilidade a maiúsculas e minúsculas: Se você deseja que a pesquisa não diferencie maiúsculas de minúsculas, use a opção -iname.

$ find /home -iname "documento*"

Limitando a profundidade da pesquisa: Limite a profundidade da pesquisa a um nível específico com a opção -maxprofundidade.

$ encontrar /home -maxprofundidade 2 -name "*.txt"

Excluindo diretórios específicos: Exclua determinados diretórios da sua pesquisa usando -not ou ! opção.

$ find /home -type f -name "*.txt" -not -path "/home/user/exclude/*"

Lembre-se, dominar o

Pesquise pelo conteúdo do arquivo usando

Quando se trata de encontrar conteúdo específico em arquivos, o

Pesquisa de conteúdo básico: Para procurar uma string específica em um arquivo, use a seguinte sintaxe

$ grep nome do arquivo "search_string"

Substituir

Pesquise em vários arquivos: Se você quiser pesquisar vários arquivos, forneça um curinga ou um padrão de arquivo específico

$ grep "padrão" /caminho/para/arquivos/*.txt

Pesquisa sem distinção entre maiúsculas e minúsculas: Torne sua pesquisa sem distinção entre maiúsculas e minúsculas com a opção -i

$ grep -i nome do arquivo "padrão"

Exibir números de linha: Se você quiser saber os números das linhas onde o padrão é encontrado, use a opção -n

$ grep -n nome do arquivo "padrão"

Exibir apenas nomes de arquivos: Para mostrar apenas os nomes dos arquivos que contêm o padrão, use a opção -l

$ grep -l "padrão" /caminho/para/arquivos/*.txt

Pesquisar recursivamente: Se você deseja procurar um padrão em todos os arquivos de um diretório e seus subdiretórios, use a opção -r

$ grep -r "padrão" /caminho/para/diretório

Excluir arquivos ou diretórios: Exclua determinados arquivos ou diretórios da sua pesquisa com o

$ grep "padrão" --exclude=*.log /caminho/para/arquivos/*

Pesquisar palavras inteiras: Use a opção -w para pesquisar palavras inteiras, evitando correspondências parciais

$ grep -w nome do arquivo "palavra"

Avançado

Pesquisar correspondências invertidas: Inverta a correspondência para exibir linhas que não contenham o padrão especificado usando a opção -v

$ grep -v nome do arquivo "padrão"

Contando partidas: Se você quiser saber quantas linhas contém o padrão, use a opção -c:

$ grep -c nome do arquivo "padrão"

Exibindo apenas texto correspondente: mostre apenas o texto que corresponde ao padrão com a opção -o:

$ grep -o nome do arquivo "padrão"

Pesquisa recursiva com números de linha: Combine opções para uma pesquisa abrangente, por exemplo:

$ grep -r -n "padrão" /caminho/para/diretório

Dominando o

Métodos alternativos de pesquisa de arquivos

Além do poderoso

Encontre arquivos usando script Python

Às vezes, um script Python personalizado pode fornecer mais flexibilidade na pesquisa de arquivos. Aqui sistema operacional e fnmatch módulos:

importar sistema operacional
de fnmatch importar fnmatch

definição encontrar_arquivos(diretório, padrão):
    para raiz, diretórios, arquivos em os.walk(diretório):
        para arquivo em arquivos:
            se fnmatch(arquivo, padrão):
                imprimir(os.path.join(raiz, arquivo))

# Usage
encontrar_arquivos('/caminho/para/pesquisar', '*.TXT')

Este script percorre o diretório e seus subdiretórios, combinando arquivos com base no padrão especificado. Personalize o encontrar_arquivos função para atender aos seus critérios de pesquisa específicos.

O

Olocalizar” command is another efficient way to find files on a Linux system. It uses a pre-built index, making searches faster compared to the “find” command. However, keep in mind that the index needs regular updates to include recent changes.

Atualize o banco de dados de localização:

$ sudo atualizadob

Pesquisar arquivos:

$ localizar nome do arquivo.txt

Usando o

Se você

Encontre o local do executável:

$ qual executável_name

Usando

O

Instale o fd:

$ sudo apt-get install fd-find # For Ubuntu/Debian
$ sudo dnf install fd # For Fedora

Pesquisar arquivos:

$ fdfind Documentos
Telefone/Documentos
Documentos
Documentos.zip

Scripts e alias personalizados

Por último, você pode criar scripts de shell ou aliases personalizados para agilizar seu processo de pesquisa de arquivos. Por exemplo:

# Custom Alias
alias findtxt='find /path/to/search -name "*.txt"'

# Usage
$ findtxt

Scripts e aliases personalizados permitem criar atalhos para suas necessidades específicas de pesquisa de arquivos, melhorando seu fluxo de trabalho.

Encontre arquivos no Linux usando script Bash

Criar e usar um script bash ajuda a automatizar tarefas repetitivas de pesquisa de arquivos no Linux. Abaixo está um exemplo de um script Bash simples que procura arquivos com base em um padrão fornecido:

#!/bin/bash

# Bash script to find files based on a pattern

if [ $# -ne 2 ]; then
echo "Usage: $0 <directory> <pattern>"
exit 1
fi

directory=$1
pattern=$2

# Check if the directory exists
if [ ! -d "$directory" ]; then
echo "Error: Directory $directory not found."
exit 1
fi

# Use find command to search for files
find "$directory" -name "$pattern" -print

Salve este script em um arquivo, por exemplo, find_files.sh, e torne-o executável com o seguinte comando:

$ chmod x find_files.sh

Agora, você pode usar o script para procurar arquivos fornecendo o diretório e o padrão como argumentos:

$ ./find_files.sh /caminho/para/pesquisar "*.txt"

Este script verifica se o número correto de argumentos foi fornecido e se o diretório especificado existe. Em seguida, ele usa o comando find para procurar arquivos com base no padrão fornecido.

Bônus: como pesquisar imagens no Linux

No Linux, existem várias ferramentas e métodos para pesquisa de imagens, cada um oferecendo recursos e capacidades exclusivos. Aqui estão algumas opções:

“find” Command with File Type Filtering:

O padrão

$ encontrar /caminho/para/imagens -type f -name "*.jpg"

O

O

$ sudo apt-get install fd-find # For Ubuntu/Debian
$ sudo dnf install fd # For Fedora

Procure imagens com uma extensão específica:

$fdfind-ejpg

O

O

$ localizar '*.jpg'

Lembre-se de atualizar o banco de dados de localização regularmente para alterações recentes:

$ sudo atualizadob

“grep” Command for Specific Image Names:

Se você tiver uma convenção de nomenclatura específica para seus arquivos de imagem, poderá usar o

$ grep -r 'padrão' /caminho/para/imagens

Substituir

“file” Command

O

$ arquivo /caminho/para/imagens/*

Procure linhas que incluam

“feh” Image Viewer with Filelist

Se você tiver uma lista de arquivos de imagem e quiser visualizá-los, o

$ feh -f $(encontrar /caminho/para/imagens -type f -name "*.jpg")

Isso abre um visualizador de imagens com uma lista de todos os arquivos JPEG no diretório especificado.

Usando ferramentas de metadados de imagem

Se suas imagens tiverem metadados, você pode usar ferramentas como

$ exiftool -filename -r /caminho/para/imagens | grep 'termo_pesquisa'

Gerenciadores de arquivos gráficos

Gerenciadores de arquivos gráficos como Nautilus, Dolphin ou Thunar geralmente fornecem funcionalidades de pesquisa. Você pode navegar até o diretório e usar a barra de pesquisa.

Organizadores de imagens baseados em tags

Ferramentas como

Resumo

Concluindo, dominar a pesquisa de arquivos no Linux envolve compreender e combinar vários comandos, ferramentas e técnicas de script. Se você