Updated: 11/30/2020 by Computer Hope

em sistemas operacionais Linux, o comando find pode ser usado para procurar arquivos e diretórios em seu computador. Para prosseguir, selecione um link da seguinte lista ou vá através de cada seção em ordem.

Nota

para usar find, comece por abrir uma sessão terminal para aceder à linha de comandos.

funcionalidade básica do find

correr o find sem quaisquer opções produz uma lista de cada ficheiro e Directório dentro e sob a pasta de trabalho., Por exemplo, se o seu directório de trabalho for /home/hope/Documents, a correr procura os resultados seguintes:

  • cada ficheiro em /home/hope/Documents.
  • cada subdiretório em / home/hope / Documents.
  • Cada arquivo em cada um desses subdiretórios.

vamos vê-lo em ação., Primeiro, vamos verificar nosso diretório de trabalho usando o comando pwd:

pwd
/home/hope/Documents

Agora vamos executar encontrar, sem quaisquer opções:

find

neste exemplo, temos um total de dez arquivos e quatro subdiretórios e debaixo de nossos pasta de Documentos.

observe que o resultado começa com um único ponto, que representa o diretório de trabalho., Executar o find sem opções é o mesmo que especificar que a pesquisa deve começar na pasta de trabalho, como este:

find .

o exemplo acima é a forma” adequada ” de usar o find. Se você tentar usá-lo em outro sistema operacional Unix-like, como o FreeBSD, especificar um diretório é necessário. É uma boa prática usar esta forma de comando.,

a Especificação do local onde busca

Para listar apenas os arquivos e subdiretórios contidos no diretório /home/esperança/Documentos/imagens, especifique o primeiro argumento do comando como:

find /home/hope/Documents/images

Observe que o caminho completo também é mostrado nos resultados.,

Se o nosso diretório de trabalho é /home/esperança/Documentos, podemos usar o seguinte comando, que se encontra a mesma arquivos:

find ./images

Mas, desta vez, o resultado reflete o local de partida da pesquisa e se parece com isso:

Por padrão, a pesquisa procura, em cada subdiretório em seu local de partida. Se você quiser restringir quantos níveis de subdiretório a procurar, você pode usar a opção-maxdepth com um número.

Por exemplo, especificando-maxdepth 1 procura apenas no directório onde a pesquisa começa., Se quaisquer subdiretórios forem encontrados, eles são listados, mas não pesquisados.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

Especificando -maxdepth 2 procura no diretório e um subdiretório profundidade:

find . -maxdepth 2

Especificando -maxdepth 3 procura um nível mais profundo do que isso:

find . -maxdepth 3

procurar por nome

Para restringir os resultados de pesquisa para corresponder apenas os arquivos e diretórios que tem um certo nome, use a opção nome e colocar o nome entre aspas:

find . -name "picard.jpg"
./images/memes/picard.jpg

Você também pode usar caracteres curinga, como parte de seu nome de arquivo., Por exemplo, para encontrar todos os arquivos cujo nome termina em .jpg, você pode usar um asterisco para representar o resto do nome do arquivo. Quando você executar o comando, o shell glob de nome de arquivo em qualquer coisa que corresponda ao padrão:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

Repare que o nosso comando não lista o arquivo com extensão (neste caso, JPG) é em letras maiúsculas. Isso é porque ao contrário de outros sistemas operacionais, como o Microsoft Windows, os nomes de arquivos Linux são sensíveis à capitalização.,”>

A lista de diretórios só e omitir nomes de arquivo, especifique -tipo d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

a localização de arquivos com base no tamanho

Por exemplo, para localizar os arquivos que são “maiores do que 50 kilobytes”, o uso -tamanho +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

Para arquivos de “mais de 10 megabytes”, o uso -tamanho +10M:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

Para o “maior do que 1 gigabyte”, o uso -tamanho +1G:

find . -size +1G
./archlinux-2016.02.01-dual.iso

Para arquivos em uma determinada faixa de tamanho, use duas opções de tamanho., Por exemplo, para localizar arquivos “maior do que 10 mb, mas menor do que 1 gigabyte”, especifique -size +10M -tamanho -1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

a localização de arquivos baseadas na modificação, acesso a, ou alteração de estado

O -mtime opção restringe a busca pelo número de dias que o conteúdo do arquivo foi modificado. Para especificar dias no passado, use um número negativo., Por exemplo, para encontrar apenas os arquivos que foram modificados nos últimos dois dias (48 horas atrás), use-mtime -2:

find . -mtime -2

a opção-mmin faz a mesma coisa, mas em termos de minutos, não Dias. Por exemplo, este comando mostra apenas os ficheiros modificados na última meia hora:

find . -mmin -30

uma opção semelhante é-ctime, que verifica quando o estado de um ficheiro foi alterado pela última vez, medido em dias. Uma alteração de Estado é uma alteração nos metadados do ficheiro. Por exemplo, mudar as permissões de um arquivo é mudança de Estado.,

a opção-cmin procura uma alteração de Estado, medida em minutos.

também pode procurar quando um ficheiro foi acedido pela última vez-por outras palavras, quando o seu conteúdo foi visto mais recentemente. A opção-atime é usada para procurar arquivos com base em seu tempo de acesso mais recente, medido em dias.

a opção-amin executa a mesma restrição de pesquisa, mas medida em minutos.

redireccionando o resultado para um ficheiro de texto

Se estiver a efectuar uma pesquisa muito grande, poderá querer gravar os seus resultados de pesquisa num ficheiro, para que possa ver os resultados mais tarde., Você pode fazer isso redirecionando seu resultado find para um arquivo:

find . -iname "*.jpg" > images.txt

você pode então abrir seus resultados em um editor de texto, ou imprimi-los com o comando cat.

cat images.txt

Alternativamente, você pode direcionar a sua saída para o comando tee, que imprime a saída para a tela e escrever para um ficheiro:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

a Supressão de mensagens de erro

Você pode receber a mensagem de erro “Permissão negada” ao realizar uma pesquisa., Por exemplo, se procurar no directório raiz como um utilizador normal:

find /

irá receber essa mensagem de erro se o find tentar aceder a um ficheiro que a sua conta de Utilizador não tem permissão para ler. Você pode realizar a pesquisa como o superusor (root), que tem acesso completo a cada arquivo no sistema. Mas não é recomendado fazer as coisas como root, a menos que não haja outras opções.,

Se tudo o que você precisa fazer é ocultar que a “Permissão negada” mensagens, você pode adicionar 2&>1 | grep -v “Permissão negada” ao final do comando, como este:

find / 2>&1 | grep -v "Permission denied"

O exemplo acima filtra a “Permissão negada” mensagens de sua pesquisa. Como?

2 >&1 é um redirecionamento especial que envia mensagens de erro para a saída padrão para encaminhar as linhas combinadas de saída para o comando grep., grep-v então realiza uma correspondência inversa em “Permission denied”, exibindo apenas linhas que não contêm esse texto.

redireccionar e usar o grep para filtrar as mensagens de erro é uma técnica útil quando “Permissão negada” está atrapalhando seus resultados de pesquisa e você não pode realizar a pesquisa como root.

exemplos

find ~/. -name "*.txt" -amin -120

Encontre todos os ficheiros na sua pasta pessoal e abaixo dos quais termine na extensão”.txt”. Mostra apenas os ficheiros acedidos nas últimas duas horas.,

find . -name "*.zip" -size +10M -mtime -3

Encontre todos os arquivos no diretório de trabalho e abaixo do qual o nome tem a extensão “.zip ” e cujo tamanho é superior a 10 megabytes. Exibir Apenas arquivos cujo conteúdo foi modificado nas últimas 72 horas.

find . -iname "*report*" -type f -maxdepth 2

execute uma busca insensível a maiúsculas por arquivos que contenham a palavra “relatório” em seu nome. Se a pesquisa encontrar um diretório com” relatório ” em seu nome, não mostrá-lo. Procure apenas no directório de trabalho, e um nível de directório por baixo dele.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Encontre todos os arquivos no sistema cujo nome contém “init”, suprimindo mensagens de erro. Mostra os resultados no ecrã e envia-os para um ficheiro no seu directório pessoal chamado “initfiles”.txt”.