fbpx

Comandos Linux – Comando find

Comando find do Linux

Atualizado: 05/04/2019 por Computer Hope

comando find

Nos sistemas operacionais do tipo Unix, o comando find procura arquivos e diretórios em um sistema de arquivos .

Este documento cobre a versão GNU / Linux do find .

Descrição

find localiza arquivos no seu sistema. Dentro de cada árvore de diretório especificada pelo caminho especificado, ele avalia a expressão especificada da esquerda para a direita, de acordo com as regras de precedência (consulte ” Operadores “, abaixo) até que o resultado seja conhecido. O resultado é “conhecido” quando o lado esquerdo da expressão é determinado como FALSE para operações AND ou TRUE para operações OR. Nesse ponto, encontre move-se para o próximo caminho até que todos os caminhos tenham sido pesquisados.

O find é uma ferramenta fundamental e extremamente poderosa para trabalhar com os arquivos do seu sistema Linux. Ele pode ser usado sozinho para localizar arquivos ou em conjunto com outros programas para executar operações nesses arquivos.

Sintaxe

  encontre [-H] [-L] [-P] [-D depura ] [-O level ] [ caminho ...] [ expressão ]

Opções

As opções -H , -L e -P controlam o tratamento de links simbólicos . Os argumentos a seguir são considerados nomes de arquivos ou diretórios a serem examinados, até o primeiro argumento que começa com ”  ” ou o argumento ” ( ” ou ” ! “.) Esse argumento e os argumentos a seguir são considerados os expressão que descreve o que está sendo pesquisado. Se nenhum caminho for especificado, o diretório atual será usado. Se nenhuma expressão for fornecida, a expressão -print será usada (mas você provavelmente deve considerar usar -print0 de qualquer maneira. Mais informações sobre isso abaixo )

Os argumentos na lista de expressões também são chamados de “opções”, mas as cinco opções “reais” -H , -L , -P , -D e -O devem aparecer antes do primeiro nome do caminho, se forem usadas. . Um traço duplo (”  “) também pode ser usado para sinalizar que os argumentos restantes não são opções (embora garantir que todos os pontos de partida comecem com ” ./ ” ou ” / ” é geralmente mais seguro se você usar caracteres curinga no lista de pontos de partida).

-PNunca siga links simbólicos. Esse é o padrão. Quando localizar examina ou imprime informações em um arquivo e o arquivo é um link simbólico, as informações usadas serão obtidas das propriedades do próprio link simbólico.
-EUSiga os links simbólicos. Quando localizar examina ou imprime informações sobre arquivos, as informações usadas serão obtidas das propriedades do arquivo para as quais o link aponta, não do próprio link (a menos que seja um link simbólico quebrado ou a localização não consiga examinar o arquivo para o qual os pontos de link). O uso desta opção implica -noleaf . Se você mais tarde usar a opção -P , o -noleaf ainda estará em vigor. Se -L estiver em vigor e o find descobrir um link simbólico para um subdiretório durante sua pesquisa, o subdiretório apontado pelo link simbólico será pesquisado.

Quando a opção -L estiver em vigor, o predicado -type sempre corresponderá ao tipo de arquivo ao qual um link simbólico aponta e não ao próprio link (a menos que o link simbólico esteja quebrado). O uso de -L faz com que os predicados -lname e -ilname sempre retornem false.

-HNão siga os links simbólicos, exceto durante o processamento dos argumentos da linha de comandos. Quando localizar examina ou imprime informações sobre arquivos, as informações usadas serão obtidas das propriedades do próprio link simbólico. A única exceção a esse comportamento é quando um arquivo especificado na linha de comando é um link simbólico e o link pode ser resolvido. Para essa situação, as informações usadas são obtidas de qualquer ponto para o qual o link aponta (ou seja, o link é seguido). As informações sobre o próprio link são usadas como fallback se o arquivo apontado pelo link simbólico não puder ser examinado. Se -H estiver em vigor e um dos caminhos especificados na linha de comandos for um link simbólico para um diretório, o conteúdo desse diretório será examinado (embora a especificação de -maxdepth 0 impeça isso).

Se mais de um de -H , -L e -P for especificado, cada um substituirá os outros; o último que aparece na linha de comando entra em vigor. Como é o padrão, a opção -P deve ser considerada em vigor, a menos que -H ou -L seja especificado. O GNU encontra frequentemente os arquivos stat durante o processamento da própria linha de comando, antes de qualquer pesquisa começar. Essas opções também afetam como esses argumentos são processados. Especificamente, existem vários testes que comparam os arquivos listados na linha de comando com um arquivo que estamos considerando no momento. Em cada caso, o arquivo especificado na linha de comando será examinado e algumas de suas propriedades serão salvas. Se o arquivo nomeado é de fato um link simbólico e a opção -P está em vigor (ou se -H nem -L foram especificados), as informações usadas para a comparação serão obtidas das propriedades do link simbólico. Caso contrário, ele será retirado das propriedades do arquivo para o qual o link aponta. Se a localização não puder seguir o link (por exemplo, porque ele possui privilégios insuficientes ou o link aponta para um arquivo inexistente), as propriedades do próprio link serão usadas.

Quando as opções -H ou -L estiverem em vigor, quaisquer links simbólicos listados como argumento de -newer serão desreferenciados e o registro de data e hora será retirado do arquivo para o qual o link simbólico aponta. A mesma consideração se aplica a -newerXY , -anewer e -cnewer .

A opção -follow tem um efeito semelhante a -L , embora tenha efeito no ponto em que aparece (ou seja, se -L não for usado, mas -follow , quaisquer links simbólicos que apareçam após -follow na linha de comando serão desreferenciados, e aqueles que antes não serão).

-D debugoptionsImprimir informações de diagnóstico; isso pode ser útil para diagnosticar problemas com o motivo pelo qual a localização não está fazendo o que você deseja. A lista de opções de depuração deve ser separada por vírgula. A compatibilidade das opções de depuração não é garantida entre os lançamentos do findutils . Para obter uma lista completa das opções de depuração válidas, consulte a saída da ajuda find -D . As opções de depuração válidas incluem:

SocorroExplique as opções de depuração.
árvoreMostre a árvore de expressão em sua forma original e otimizada.
EstadoImprima mensagens como arquivos são examinados com as chamadas de sistema stat e lstat . O programa de busca tenta minimizar essas chamadas.
optarImprime informações de diagnóstico relacionadas à otimização da árvore de expressões; veja a opção -O .
taxasImprime um resumo indicando com que frequência cada predicado teve êxito ou falhou.
-O nívelAtiva a otimização de consultas . O programa find reordena os testes para acelerar a execução, preservando o efeito geral; isto é, predicados com efeitos colaterais não são reordenados um em relação ao outro. As otimizações executadas em cada nível de otimização são as seguintes.

Não deve haver um espaço entre -O e o decimal representando o nível de otimização. Os decimais e seus significados são os seguintes:

0 0Equivalente ao nível de otimização 1.
1Este é o nível de otimização padrão e corresponde ao comportamento tradicional. As expressões são reordenadas para que os testes baseados apenas nos nomes dos arquivos (por exemplo -name e -regex) sejam executados primeiro.
2Todos os testes -type ou -xtype são executados após quaisquer testes baseados apenas nos nomes dos arquivos, mas antes de quaisquer testes que exijam informações do inode . Em muitas versões modernas do Unix, os tipos de arquivo são retornados por readdir () e, portanto, esses predicados são mais rápidos em avaliar do que os predicados que precisam declarar o arquivo primeiro.
3Nesse nível de otimização, o otimizador de consultas completo com base em custos está ativado. A ordem dos testes é modificada para que testes baratos (rápidos) sejam realizados primeiro e testes mais caros sejam realizados posteriormente, se necessário. Dentro de cada faixa de custo, os predicados são avaliados mais cedo ou mais tarde, de acordo com a probabilidade de êxito ou não. Para -o , os predicados com probabilidade de êxito são avaliados anteriormente e para -a , os predicados com probabilidade de falha são avaliados anteriormente.

O otimizador baseado em custos tem uma idéia fixa da probabilidade de um determinado teste ser bem-sucedido. Em alguns casos, a probabilidade leva em consideração a natureza específica do teste (por exemplo, presume-se que o tipo f é mais provável que seja bem-sucedido que o tipo c ). O otimizador baseado em custos está sendo avaliado no momento. Se ele não melhorar o desempenho da localização , será removido novamente. Por outro lado, otimizações que provam ser confiáveis, robustas e eficazes podem ser ativadas em níveis mais baixos de otimização ao longo do tempo. No entanto, o comportamento padrão (ou seja, nível de otimização 1) não será alterado na série de versões 4.3.x. conjunto de testes findutils executa todos os testes encontrados em cada nível de otimização e garante que o resultado seja o mesmo.

Expressões

expressão é composta de opções (que afetam a operação geral em vez do processamento de um arquivo específico e sempre retornam verdadeiro ), testes (que retornam um valor verdadeiro ou falso ) e ações (que têm efeitos colaterais e retornam um valor verdadeiro ou verdadeiro). valor falso), todos separados por operadores. e é assumido onde o operador é omitido.

Se a expressão não contiver ações além de -une , -print será executada em todos os arquivos para os quais a expressão é verdadeira.

Opções de expressão

Todas as opções sempre retornam verdadeiras. Exceto para -daystart , -follow e -regextype , as opções afetam todos os testes, incluindo os testes especificados antes da opção. Isso ocorre porque as opções são processadas quando a linha de comando é analisada, enquanto os testes não fazem nada até que os arquivos sejam examinados. As opções -daystart , -follow e -regextype são diferentes nesse aspecto e têm efeito apenas nos testes que aparecem mais tarde na linha de comando. Portanto, para maior clareza, é melhor colocá-los no início da expressão. Um aviso será emitido se você não fizer isso.

-dUm sinônimo para -thp , para compatibilidade com FreeBSD, NetBSD, OpenBSD e MacOS X.
-daystartMeça os tempos (para -amin , -atime , -cmin , -ctime , -mmin e -mtime ) desde o início de hoje e não 24 horas atrás. Esta opção afeta apenas os testes que aparecem mais tarde na linha de comando.
-profundidadeProcesse o conteúdo de cada diretório antes do próprio diretório. A ação -delete também implica -pth .
-SegueEssa opção é uma maneira antiga de fazer a mesma coisa que -L . Agora está obsoleto; você deve usar a opção -L .

Essa opção desreferencia os links simbólicos e implica -noleaf . A opção -follow afeta apenas os testes que aparecem depois na linha de comando. A menos que a opção -H ou -L tenha sido especificada, a posição da opção -follow altera o comportamento do predicado -newer ; todos os arquivos listados como argumento de -newer serão desreferenciados se forem links simbólicos. A mesma consideração se aplica a -newerXY , -anewer e -cnewer . Da mesma forma, o predicado -type sempre corresponderá ao tipo de arquivo ao qual um link simbólico aponta, em vez do próprio link. O uso de -follow faz com que os predicados -lname e -ilname sempre retornem false .

-help , –helpImprima uma mensagem de ajuda e saia.
-ignore_readdir_raceNormalmente, o find fornece uma mensagem de erro quando não pode declarar um arquivo. Se você der essa opção e um arquivo for excluído entre o horário em que a localização lê o nome do arquivo no diretório e o horário em que ele tenta estatisticamente, o arquivo não será emitido. Isso também se aplica aos caminhos fornecidos na linha de comando. Esta opção entra em vigor no momento em que a linha de comandos é lida, o que significa que você não pode procurar uma parte do sistema de arquivos com esta opção ativada e parte dele com esta opção desativada.
-níveis de profundidade máximosDesça na maioria dos níveis (um número inteiro não negativo) dos diretórios abaixo dos argumentos da linha de comando. -maxdepth 0 significa aplicar apenas os testes e ações aos caminhos especificados na linha de comandos e não desce em subdiretórios.
níveis de profundidadeNão aplique nenhum teste ou ação em níveis inferiores aos níveis (um número inteiro não negativo). -mindepth 1 significa processar todos os arquivos, exceto os argumentos da linha de comando.
-mountNão desça diretórios em outros sistemas de arquivos . Um nome alternativo para -xdev . Esta opção é fornecida para compatibilidade com algumas outras versões do find .
-noignore_readdir_raceDesativa o efeito de -ignore_readdir_race .
-noleafNão otimize assumindo que os diretórios contenham 2 subdiretórios a menos do que a contagem de links físicos. Essa opção é necessária ao pesquisar sistemas de arquivos que não seguem a convenção de link de diretório do Unix, como sistemas de arquivos CD-ROM ou MS-DOS ou pontos de montagem de volume do AFS. Cada diretório em um sistema de arquivos Unix normal possui pelo menos 2 links físicos : seu nome e seu ‘ . ‘entry. Além disso, seus subdiretórios (se houver) possuem uma entrada ‘ .. ‘ vinculada a esse diretório. Quando find está examinando um diretório, depois de declarar 2 subdiretórios a menos do que a contagem de links do diretório, ele sabe que o restante das entradas no diretório são não-diretórios (arquivos ‘leaf’ na árvore de diretórios). Se apenas os nomes dos arquivos precisam ser examinados, não há necessidade de especificá- los; isso proporciona um aumento significativo na velocidade da pesquisa.

Se você estiver usando um sistema de arquivos linux padrão, não precisará usar esta opção.

-regextype typeAltera a sintaxe da expressão regular entendida pelos testes -regex e -iregex , que ocorrem posteriormente na linha de comandos. Os tipos atualmente implementados são emacs (este é o padrão), posix – awk , posix-basic , posix- egrep e posix-extended .

Se você estiver usando um estilo específico de sintaxe de expressão regular, poderá ser necessário especificar esta opção. Caso contrário, deve ser desnecessário.

-version , –versionImprima o número da versão de localização e saia.
-warn , -nowarnAtive ou desative as mensagens de aviso. Esses avisos se aplicam apenas ao uso da linha de comando, e não a quaisquer condições que possam encontrar ao pesquisar diretórios. O comportamento padrão corresponde a -warn se a entrada padrão for um tty e a -nowarn caso contrário.
-xdevNão desça diretórios em outros sistemas de arquivos.

Testes

Alguns testes, por exemplo -newerXY e -samefile , permitem a comparação entre o arquivo que está sendo examinado no momento e algum arquivo de referência especificado na linha de comando. Quando esses testes são usados, a interpretação do arquivo de referência é determinada pelas opções -H , -L e -P e qualquer -follow anterior, mas o arquivo de referência é examinado apenas uma vez, no momento em que a linha de comando é analisada. Se o arquivo de referência não puder ser examinado (por exemplo, a chamada do sistema stat falhar), uma mensagem de erro será emitida e as saídas serão localizadas com um status diferente de zero.

Onde n é usado como argumento numérico, pode ser especificado como:

+ nPara maior que n .
 nPor menos de n .
nPor exatamente n .

Os testes são os seguintes:

-amin nRetorna verdadeiro: um arquivo foi acessado pela última vez n minutos atrás.
-novo arquivoRetorna true se um arquivo foi acessado pela última vez mais recentemente que o arquivo foi modificado. Se o arquivo for um link simbólico e a opção -H ou -L estiver em vigor, sempre será usado o tempo de acesso ao arquivo para o qual ele aponta.
-atime nRetorna true se um arquivo foi acessado pela última vez n * 24 horas atrás. Quando descobrir quantos períodos de 24 horas atrás o arquivo foi acessado pela última vez, qualquer parte fracionária é ignorada; portanto, para corresponder ao tempo +1 , um arquivo deve ter sido acessado há pelo menos dois dias.
-cmin nRetorna true se o status de um arquivo foi alterado pela última vez n minutos atrás.
-cnewer fileRetorna true se o status de um arquivo foi alterado pela última vez mais recentemente que o arquivo foi modificado. Se o arquivo for um link simbólico e a opção -H ou -L estiver em vigor, o tempo de alteração de status do arquivo para o qual ele aponta será sempre usado.
-ctime nRetorna true se o status de um arquivo foi alterado pela última vez n * 24 horas atrás. Consulte os comentários para -atime para entender como o arredondamento afeta a interpretação dos tempos de alteração do status do arquivo.
-esvaziarRetorna true se um arquivo estiver vazio (não contém nada) e for um arquivo regular ou um diretório.
-executávelCorresponde a arquivos executáveis ​​e diretórios pesquisáveis ​​(no sentido da resolução de nomes de arquivos). Isso leva em consideração as listas de controle de acesso e outros artefatos de permissões que o teste -perm ignora. Esse teste faz uso da chamada do sistema de acesso e, portanto, pode ser enganado pelos servidores NFS que fazem o mapeamento de UID (ou remoção de raiz ), pois muitos sistemas implementam o acesso no kernel do cliente e, portanto, não podem usar as informações de mapeamento de UID mantidas em o servidor. Como esse teste é baseado apenas no resultado da chamada do sistema de acesso, não há garantia de que um arquivo para o qual esse teste seja bem-sucedido possa realmente ser executado.
-falsoQuando usado como parte de uma expressão, -false sempre avalia como falso.
-fstype typeRetorna true se um arquivo estiver em um sistema de arquivos do tipo Os tipos de sistema de arquivos válidos variam entre diferentes versões do Unix; uma lista incompleta de tipos de sistemas de arquivos aceitos em alguma versão do Unix ou em outra é: ufs , 4.2 , 4.3 , nfs , tmp , mfs , S51K , S52K . Você pode usar -printf com a diretiva % F para ver os tipos de seus sistemas de arquivos.
-gid nRetorna true se o ID do grupo numérico de um arquivo for n .
-group gnameRetorna true se um arquivo pertence ao grupo gname (IDs de grupo numéricos são permitidos).
padrão -ilnameComo -lname , mas a correspondência não diferencia maiúsculas de minúsculas. Se a opção -L ou a opção -follow estiver em vigor, esse teste retornará false , a menos que o link simbólico esteja quebrado.
padrãoComo -name , mas a correspondência não diferencia maiúsculas de minúsculas. Por exemplo, os padrões ‘ fo * ‘ e ‘ F ?? ‘corresponde aos nomes dos arquivos’ Foo ‘,’ FOO ‘,’ foo ‘,’ fOo ‘etc. etc. Nesses padrões, diferente da expansão do nome do arquivo pelo shell , uma inicial’ . ‘pode ser correspondido por’ * ‘. Ou seja, a barra find -name * corresponderá ao arquivo ‘ .foobar ‘. Observe que você deve sempre citar padrões, caso contrário, o shell expandirá qualquer caractere curinga neles.
-inum nRetorna true se um arquivo tiver o número de inode n . Normalmente, é mais fácil usar o teste -samefile .
padrão de caminhoComporta-se da mesma maneira que -iwholename . Esta opção está obsoleta, portanto você não deve mais usá-la.
padrão -iregexComo -regex , mas a correspondência não diferencia maiúsculas de minúsculas .
-iwholename patternComo -wholename , mas a correspondência não diferencia maiúsculas de minúsculas.
-links nRetorna true se um arquivo tiver n links.
-lname padrãoRetorna true se um arquivo é um link simbólico cujo conteúdo corresponde ao padrão de padrão de shell. Os metacaracteres não tratam ‘ / ‘ ou ‘ . ‘especialmente. Se a opção -L ou a opção -follow estiver em vigor, esse teste retornará false, a menos que o link simbólico esteja quebrado.
-mmin nRetorna true se os dados do arquivo foram modificados pela última vez n minutos atrás.
-mtime nRetorna true se os dados de um arquivo foram modificados pela última vez n * 24 horas atrás. Consulte a opção -atime para entender como o arredondamento afeta a interpretação dos tempos de modificação do arquivo.
-name patternRetorna true se a base de um nome de arquivo (o caminho com os diretórios principais removidos) corresponder ao padrão de padrão de shell. Os metacaracteres (‘ * ‘, ‘ ? ‘ E ‘ [] ‘) correspondem a ‘ . ‘no início do nome base. Para ignorar um diretório e os arquivos nele, use -prune ; veja um exemplo na descrição de -path . Os aparelhos não são reconhecidos como especiais, apesar do fato de que algumas conchas, incluindo o bash, imprimem aparelhos com um significado especial nos padrões de conchas. A correspondência do nome do arquivo é realizada com o uso da função de biblioteca fnmatch . Não se esqueça de colocar o padrão entre aspas para protegê-lo da expansão pelo shell.
-novo arquivoRetorna true se um arquivo foi modificado mais recentemente que o arquivo . Se o arquivo for um link simbólico e a opção -H ou -L estiver em vigor, o tempo de modificação do arquivo para o qual ele aponta será sempre usado.
referência -newerXYCompara o registro de data e hora do arquivo atual com a referência . O argumento de referência normalmente é o nome de um arquivo (e um de seus registros de data e hora é usado para a comparação), mas também pode ser uma string que descreve um tempo absoluto. X e Y são espaços reservados para outras letras, e essas letras selecionam o horário pertencente a como a referência é usada para a comparação.

umaO tempo de acesso da referência do arquivo
BA hora de nascimento da referência do arquivo
cO tempo de referência da mudança de status do inode
mA hora da modificação da referência do arquivo
treferência é interpretada diretamente como um tempo

Algumas combinações são inválidas; por exemplo, é inválido que X seja t . Algumas combinações não são implementadas em todos os sistemas; por exemplo, B não é suportado em todos os sistemas. Se uma combinação inválida ou não suportada de XY for especificada, ocorrerá um erro fatal. As especificações de tempo são interpretadas como para o argumento da opção -d da data do GNU. Se você tentar usar o horário de nascimento de um arquivo de referência e o horário de nascimento não puder ser determinado, uma mensagem de erro fatal será exibida. Se você especificar um teste que se refira à hora de nascimento dos arquivos que estão sendo examinados, esse teste falhará em todos os arquivos em que a hora de nascimento é desconhecida.

-nogrupoRetorna ter se nenhum grupo existente corresponder ao ID do grupo numérico do arquivo.
-nouserRetorna true se nenhum usuário existente corresponder ao ID do usuário numérico do arquivo.
-path padrãoRetorna true se o nome de um arquivo corresponder ao padrão de shell. Os metacaracteres não tratam ‘ / ‘ ou ‘ . ‘especialmente; então, por exemplo,

  encontrar .  -caminho "./sr*sc"

imprimirá uma entrada para um diretório chamado ‘ ./src/misc ‘ (se houver). Para ignorar uma árvore de diretórios inteira, use -prune em vez de verificar todos os arquivos na árvore. Por exemplo, para pular o diretório ‘ src / emacs ‘ e todos os arquivos e diretórios abaixo dele, e imprimir os nomes dos outros arquivos encontrados, faça algo assim:

  encontrar .  -path ./src/emacs -prune -o -print

Observe que o teste de correspondência de padrões se aplica a todo o nome do arquivo, iniciando em um dos pontos de início nomeados na linha de comandos. Só faria sentido usar um nome de caminho absoluto aqui se o ponto inicial relevante também for um caminho absoluto. Isso significa que este comando nunca corresponderá a nada:

  encontre bar -path / foo / bar / myfile -print

caminho- predicado também é suportado pela localização do HP-UX e estará em uma versão futura do padrão POSIX .

modo de espermaRetorna true se os bits de permissão de um arquivo estiverem exatamente no modo ( octal ou simbólico). Como é necessária uma correspondência exata, se você deseja usar este formulário para modos simbólicos, pode ser necessário especificar uma sequência de modos bastante complexa. Por exemplo, -perm g = w corresponderá apenas aos arquivos que possuem o modo 0020 (ou seja, aqueles para os quais a permissão de gravação de grupo é a única permissão definida). É mais provável que você queira usar os formulários ‘ / ‘ ou ‘  ‘, por exemplo -perm -g = w , que corresponde a qualquer arquivo com permissão de gravação em grupo.
-perm – modeRetorna true se todos os bits de permissão do modo estiverem definidos para o arquivo. Os modos simbólicos são aceitos neste formulário e, geralmente, é dessa maneira que você os deseja usar. Você deve especificar ‘ u ‘, ‘ g ‘ ou ‘ o ‘ se usar um modo simbólico.
-perm / modeRetorna true se algum dos bits de permissão do modo estiver definido para o arquivo. Os modos simbólicos são aceitos neste formulário. Você deve especificar ‘ u ‘, ‘ g ‘ ou ‘ o ‘ se usar um modo simbólico. Se nenhum bit de permissão no modo estiver definido, esse teste corresponderá a qualquer arquivo.
-perm + modeDescontinuada; essa é a maneira antiga de procurar arquivos com qualquer um dos bits de permissão no modo . Você deve usar -perm / mode . Tentar usar a sintaxe ‘ + ‘ com modos simbólicos produzirá resultados inesperados.
-legívelCorresponde a arquivos legíveis. Isso leva em consideração as listas de controle de acesso e outros fatores de permissão que o teste -perm ignora. Esse teste faz uso da chamada do sistema de acesso e pode ser enganado pelos servidores NFS que fazem o mapeamento de UID (ou esmagamento de raiz), pois muitos sistemas implementam o acesso no kernel do cliente e, portanto, não podem usar as informações de mapeamento de UID mantidas em o servidor.
-regex padrãoRetorna true se um nome de arquivo corresponder ao padrão de expressão regular . Esta é uma correspondência em todo o caminho, não apenas no nome do arquivo. Por exemplo, para corresponder a um arquivo chamado ‘ ./fubar3 ‘, você pode usar a expressão regular ‘ . * Bar. ‘ou’ . * b. * 3 ‘, mas não’ f. * r3 ‘(porque o caminho completo não começa com um f ). As expressões regulares entendidas por find são, por padrão, expressões regulares do Emacs , mas isso pode ser alterado com a opção -regextype (veja acima).
 nome do mesmo arquivoRetorna true se um arquivo se refere ao mesmo inode que o nome . Quando -L está em vigor, isso pode incluir links simbólicos.
-tamanho [  | + ] n [ cwbkMG ]Retorna true se um arquivo usa n unidades de espaço no disco. Se precedido por um sinal de menos (”  “), corresponde aos arquivos que usam menos espaço; se precedido por um sinal de mais (” + “), corresponde aos arquivos que usam mais. Os seguintes sufixos podem ser usados ​​para abreviar unidades:

bpara blocos de 512 bytes (este é o padrão se nenhum sufixo for usado)
cpara bytes
Wpara palavras de dois bytes
kpara Kilobytes (unidades de 1024 bytes)
Mpara megabytes (unidades de 1048576 bytes)
Gpara Gigabytes (unidades de 1073741824 bytes)

O tamanho não conta blocos indiretos, mas conta blocos em arquivos esparsos que não são realmente alocados. Você deve observar que os especificadores de formato ‘ % k ‘ e ‘ % b ‘ de -printf lidam com arquivos esparsos de maneira diferente. O sufixo ‘ b ‘ sempre indica blocos de 512 bytes e nunca blocos de 1 kilobyte, o que é diferente do comportamento de -ls .

-verdadeiroQuando usado em uma expressão, -true sempre retorna true .
-tipo cRetorna true se um arquivo for do tipo c :

bbloquear arquivos especiais (em buffer)
carquivos especiais de caracteres (sem buffer)
ddiretórios
ppipes nomeados ( FIFO )
farquivos regulares
eulinks simbólicos. Isso nunca é verdade se a opção -L ou a opção -follow tiver sido especificada, a menos que o link simbólico esteja quebrado. Se você deseja procurar links simbólicos quando -L estiver em vigor, use -xtype .
stomadas
Dportas (um tipo de arquivo Solaris )
-uid nRetorna true se o ID do usuário numérico de um arquivo for n .
-utilizado nRetorna true se um arquivo foi acessado pela última vez n dias após a última alteração de status.
-user unameRetorna true se um arquivo pertencer ao nome do usuário (IDs numéricos do usuário são permitidos).
-wholename patternFuncionalmente o mesmo que -path . Essa alternativa é menos portátil que -path ; para maior conformidade em diferentes tipos de sistemas, você deve usar -path .
-writableCorresponde a arquivos graváveis. Isso leva em consideração as listas de controle de acesso e outros fatores de permissão que o teste -perm ignora. Esse teste faz uso da chamada do sistema de acesso e pode ser enganado pelos servidores NFS que fazem o mapeamento de UID (ou esmagamento de raiz), pois muitos sistemas implementam o acesso no kernel do cliente e, portanto, não podem usar as informações de mapeamento de UID mantidas em o servidor
-xtype cO mesmo que -type , a menos que o arquivo seja um link simbólico. Para links simbólicos: se a opção -H ou -P foi especificada, retornará true se o arquivo for um link para um arquivo do tipo c ; se a opção -L tiver sido fornecida, retornará true se c for ‘ l ‘. Em outras palavras, para links simbólicos, -xtype verifica o tipo de arquivo que -type não verifica.

Ações

-excluirExcluir arquivos correspondentes; retorna true se a remoção for bem-sucedida. Se a remoção falhar, uma mensagem de erro será emitida. Se -delete falhar, o status de saída da localização será diferente de zero (quando eventualmente sair). O uso de -delete ativa automaticamente a opção -thpth .

Não esqueça que a linha de comando find é avaliada como uma expressão ; portanto, ao colocar -delete primeiro, o find tentará excluir tudo abaixo dos pontos de partida especificados. Ao testar uma linha de comando find que mais tarde você pretende usar com -delete , especifique explicitamente -thp para evitar surpresas posteriores. Como -delete implica -thth , você não pode usar -une e -dete juntos.

comando -exec ;Executar comando em cada arquivo correspondente; retorna true se 0 for retornado como o status de saída do comando . Todos os seguintes argumentos a serem encontrados são considerados argumentos para o comando até que um ponto-e-vírgula (‘ ; ‘) seja encontrado. A string ‘ {} ‘ é substituída pelo nome do arquivo atual sendo processado em todos os lugares em que ocorre nos argumentos do comando, não apenas nos argumentos em que está sozinho, como em algumas versões do find . Ambas as construções podem precisar ser escapadas (com um ‘ \ ‘) ou citadas para protegê-las da expansão pelo shell. O comando especificado é executado uma vez para cada arquivo correspondente. O comando é executado no diretório inicial. Existem problemas de segurança inevitáveis ​​em torno do uso de -exec ; você deve usar a opção -execdir .
comando -exec {}Essa variante da ação -exec executa o comando especificado nos arquivos selecionados, mas a linha de comandos é criada anexando cada nome de arquivo selecionado no final; o número total de invocações do comando será muito menor que o número de arquivos correspondentes. A linha de comando é construída da mesma maneira que o xargs cria suas linhas de comando. Somente uma instância de ‘ {} ‘ é permitida dentro do comando. O comando é executado no diretório inicial.
comando -execdir ;

comando -execdir {}

Como -exec , mas o comando especificado é executado no subdiretório que contém o arquivo correspondente, que normalmente não é o diretório em que você começou a localizar . Esse é um método muito mais seguro para chamar comandos, pois evita “condições de corrida” (onde o comportamento é determinado por uma ordem imprevisível de operações do sistema) durante a resolução dos caminhos para os arquivos correspondentes. Como na ação -exec , a forma ‘ + ‘ de -execdir criará uma linha de comando para processar mais de um arquivo correspondente, mas qualquer chamada de comando especificada listará apenas os arquivos que existem no mesmo subdiretório. Se você usar esta opção, deverá garantir que sua variável de ambiente $ PATH não faça referência ‘ . ‘; caso contrário, um invasor poderá executar qualquer comando que desejar, deixando um arquivo com nome apropriado em um diretório no qual você executará -execdir . O mesmo se aplica a ter entradas em $ PATH que estão vazias ou não são nomes de diretório absolutos.
arquivo -flsRetorna verdadeiro; se comporta como -ls , mas grava no arquivo como -fprint . O arquivo de saída é sempre criado, mesmo que nenhuma correspondência seja encontrada.
arquivo -printRetorna verdadeiro; imprime o nome completo do arquivo no arquivo . Se o arquivo não existir quando a localização for executada, ele será criado; se existir, será truncado . Os nomes de arquivo ” / dev / stdout ” e ” / dev / stderr ” são tratados especialmente; eles se referem à saída padrão e à saída de erro padrão, respectivamente. O arquivo de saída é sempre criado, mesmo que o predicado nunca seja correspondido.
arquivo -fprint0Retorna verdadeiro; como -print0, mas grava no arquivo como -fprint . O arquivo de saída é sempre criado, mesmo que nenhuma correspondência seja encontrada.
-fprintf formato de arquivoRetorna verdadeiro; como -printf , mas grava no arquivo como -fprint . O arquivo de saída é sempre criado, mesmo que o predicado nunca seja correspondido.
-lsRetorna verdadeiro; lista o arquivo atual no formato ls -dils (consulte ls para obter detalhes) na saída padrão. As contagens de blocos são de 1K blocos, a menos que a variável de ambiente POSIXLY_CORRECT esteja configurada. Nesse caso, blocos de 512 bytes são usados.
comando -ok ;Como -exec , mas pergunta primeiro ao usuário. Se o usuário concordar, find executa o comando. Caso contrário, ele retornará false. Se o comando for executado, sua entrada padrão será redirecionada de / dev / null .

A resposta ao prompt é comparada com um par de expressões regulares para determinar se é uma resposta afirmativa ou negativa. Essa expressão regular é obtida do sistema se a variável de ambiente ‘ POSIXLY_CORRECT ‘ estiver configurada ou, caso contrário, das traduções de mensagens da localização. Se o sistema não tiver uma definição adequada, será utilizada a própria definição de localização. Nos dois casos, a interpretação da própria expressão regular será afetada pelas variáveis ​​de ambiente ‘ LC_CTYPE ‘ (classes de caracteres) e ‘ LC_COLLATE ‘ (intervalos de caracteres e classes de equivalência).

comando -okdir ;Como -execdir, mas solicita ao usuário primeiro da mesma maneira que para -ok . If the user does not agree, returns false. If the command is run, its standard input is redirected from /dev/null .
-printReturns true; prints the full file name on the standard output, followed by a newline . If you are piping the output of find into another program and there is the faintest possibility that the files which you are searching for might contain a newline, then you should consider using the -print0 option instead of -print .
-print0Returns true; prints the full file name on the standard output, followed by a null character (instead of the newline character that -print uses). This allows file names that contain newlines or other types of white space to be correctly interpreted by programs that process the find output. This option corresponds to the -0 option of xargs .
-printf formatReturns true; prints format on the standard output, interpreting ‘ \ ‘ escapes and ‘ % ‘ directives. Field widths and precisions can be specified as with the ‘ printf ‘ C function . Please note that many of the fields are printed as %s rather than %d , and this may mean that flags don’t work as you might expect. This also means that the ‘  ‘ flag does work (it forces fields to be left-aligned). Unlike -print , -printf does not add a newline at the end of the string. The escapes and directives are:

\umaAlarm bell.
\ bBackspace.
\ cStop printing using format immediately and flush the remaining output.
\ fForm feed.
\ nNewline.
\ rCarriage return .
\ tHorizontal tab.
\ vVertical tab.
\0The ASCII NUL character.
\\A literal backslash (‘ \ ‘).
\ NNNThe character whose ASCII code is NNN (where NNN is an octal value).

A ‘ \ ‘ character followed by any other character is treated as an ordinary character, so they both are printed.

%%A literal percent sign.
%umaThe file’s last access time in the format returned by the C ctime function.
%A kThe file’s last access time in the format specified by k , which is either ‘ @ ‘ or a directive of the C ‘ strftime ‘ function. The possible values for k are listed below; some of them might not be available on all systems, due to differences in strftime between systems.

Values for k can be one of the following:

@seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.

Time fields:

Hhour ( 00 .. 23 )
Euhour ( 01 .. 12 )
khour ( 0 .. 23 )
euhour ( 1 .. 12 )
Mminute ( 00 .. 59 )
plocale’s AM or PM
rtime, 12-hour ( hh:mm:ss [ AP ] M )
SSecond ( 00.00 .. 61.00 ). There is a fractional part.
Ttime, 24-hour ( hh:mm:ss )
+Date and time, separated by ‘ + ‘, for example ‘ 2004-04-28+22:22:05.0 ‘. This is a GNU extension. The time is given in the current timezone (which may be affected by setting the TZ environment variable). The seconds field includes a fractional part.
Xlocale’s time representation ( H:M:S )
Ztime zone (eg, EDT ), or nothing if no time zone is determinable

Date fields:

umalocale’s abbreviated weekday name ( Sun .. Sat )
UMAlocale’s full weekday name, variable length ( Sunday .. Saturday )
blocale’s abbreviated month name ( Jan .. Dec )
Blocale’s full month name, variable length ( January .. December )
clocale’s date and time ( Sat Nov 04 12:02:33 EST 1989 ). The format is the same as for ctime and so to preserve compatibility with that format, there is no fractional part in the seconds field.
dday of month ( 01 .. 31 )
Ddate ( mm/dd/yy )
hsame as b
jday of year ( 001 .. 366 )
mmonth ( 01 .. 12 )
vocêweek number of year with Sunday as first day of week ( 00 .. 53 )
Wday of week ( 0 .. 6 )
Wweek number of year with Monday as first day of week ( 00 .. 53 )
xlocale’s date representation ( mm/dd/yy )
ylast two digits of year ( 00 .. 99 )
Yyear ( 1970 ..)
% bThe amount of disk space used for this file in 512-byte blocks. Since disk space is allocated in multiples of the filesystem block size this is usually greater than %s /512, but it can also be smaller if the file is a sparse file.
% cFile’s last status change time in the format returned by the C ‘ ctime ‘ function.
%C kFile’s last status change time in the format specified by k , which is the same as for %A .
% dFile’s depth in the directory tree; 0 means the file is a command line argument.
% DThe device number on which the file exists (the st_dev field of struct stat ), in decimal.
% fFile’s name with any leading directories removed (only the last element).
% FType of the filesystem the file is on ; this value can be used for -fstype .
% gFile’s group name, or numeric group ID if the group has no name.
% GFile’s numeric group ID.
% hLeading directories of file’s name (all but the last element). If the file name contains no slashes (since it is in the current directory) the %h specifier expands to ” . “.
% HCommand line argument under which file was found.
%iFile’s inode number (in decimal).
% kThe amount of disk space used for this file in 1K blocks. Since disk space is allocated in multiples of the filesystem block size this is usually greater than %s /1024, but it can also be smaller if the file is a sparse file.
%euObject of symbolic link (empty string if file is not a symbolic link).
% mFile’s permission bits (in octal ). This option uses the ‘traditional’ numbers which most Unix implementations use, but if your particular implementation uses an unusual ordering of octal permissions bits, you will see a difference between the actual value of the file’s mode and the output of %m . Normally you will want to have a leading zero on this number, and to do this, you should use the # flag (as in, for example, ‘ %#m ‘).
% MFile’s permissions (in symbolic form, as for ls ).
% nNumber of hard links to file.
% pFile’s name.
% PFile’s name with the name of the command line argument under which it was found removed.
% sFile’s size in bytes.
% SFile’s sparseness. This is calculated as ( BLOCKSIZE*st_blocks / st_size ). The exact value you will get for an ordinary file of a certain length is system-dependent. However, normally sparse files will have values less than 1.0, and files which use indirect blocks may have a value that is greater than 1.0. The value used for BLOCKSIZE is system-dependent, but is usually 512 bytes. If the file size is zero, the value printed is undefined. On systems which lack support for st_blocks , a file’s sparseness is assumed to be 1.0.
% tFile’s last modification time in the format returned by the C ‘ ctime ‘ function.
%T kTempo de arquivo da última modificação no formato especificado por k , que é o mesmo que para % A .
%vocêNome de usuário do arquivo ou ID numérico do usuário, se o usuário não tiver um nome.
%VOCÊID do usuário numérico do arquivo.
% yTipo de arquivo (como em ls -l ). U = tipo desconhecido (embora isso não deva acontecer)
% YTipo de arquivo (como % y ), além de links simbólicos: L = loop, N = inexistente

Um caractere ‘ % ‘ seguido por qualquer outro caractere é descartado, mas o outro caractere é impresso (mas não confie nisso, pois outros caracteres de formato podem ser introduzidos). Um ‘ % ‘ no final do argumento de formato causa comportamento indefinido, pois não há o seguinte caractere. Em alguns locais, pode ocultar as chaves da porta, enquanto em outros pode remover a página final do romance que você está lendo.

As diretivas % me% d suportam os sinalizadores # , 0 e + , mas as outras diretivas não, mesmo que imprimam números. As diretivas numéricas que não oferecem suporte a esses sinalizadores incluem G , U , b , D , k e n . O sinalizador de formato ‘  ‘ é suportado e altera o alinhamento de um campo de justificado à direita (que é o padrão) para justificado à esquerda.

-ameixa secaVerdadeiro ; se o arquivo for um diretório, não desça nele. Se -thth for fornecida, false ; sem efeito. Como -delete implica -thth , você não pode usar -une e -dete juntos.
-SairSaia imediatamente. Nenhum processo filho ficará em execução, mas não serão processados ​​mais caminhos especificados na linha de comando. Por exemplo, find / tmp / foo / tmp / bar -print -quit imprimirá apenas / tmp / foo . Quaisquer linhas de comando construídas com -execdir … {} + serão invocadas antes da localização das saídas. O status de saída pode ou não ser zero, dependendo se um erro já ocorreu.

Manipulando nomes de arquivos incomuns

Muitas das ações de busca resultam na impressão de dados que estão sob o controle de outros usuários. Isso inclui nomes de arquivos, tamanhos, tempos de modificação e assim por diante. Os nomes de arquivos são um problema em potencial, pois podem conter qualquer caractere, exceto ‘ \ 0 ‘ e ‘ / ‘. Caracteres incomuns nos nomes de arquivos podem fazer coisas inesperadas e muitas vezes indesejáveis ​​no seu terminal (por exemplo, alterar as configurações das teclas de função em alguns terminais). Caracteres incomuns são tratados de maneira diferente por várias ações, conforme descrito abaixo:

-print0 , -fprint0Sempre imprima o nome exato do arquivo, inalterado, mesmo se a saída estiver indo para um terminal.
-ls , -flsCaracteres incomuns são sempre escapados. Caracteres de espaço em branco, barra invertida e aspas duplas são impressos usando escape em estilo C (por exemplo, ‘ \ f ‘, ‘ \ “ ‘). Outros caracteres incomuns são impressos usando escape octal. Outros caracteres imprimíveis (para -ls e -fls esses são os caracteres entre octal 041 e 0176) são impressos como estão.
-printf , -fprintfSe a saída não for para um terminal, ela será impressa como está. Caso contrário, o resultado depende de qual diretiva está em uso. As diretivas % D , % F , % g , % G , % H , % Y e % y se expandem para valores que não estão sob controle dos proprietários dos arquivos e, portanto, são impressos como estão. As diretivas % a , % b , % c , % d , % i , % k , % m , % M , % n , % s , % t , % u e % U possuem valores que estão sob o controle de arquivos ‘ proprietários, mas que não podem ser usados ​​para enviar dados arbitrários ao terminal e, portanto, são impressos como estão. As diretivas % f , % h , % l , % p e % P são citadas. Esta citação é realizada da mesma maneira que para o GNU ls . Este não é o mesmo mecanismo de citação usado para -ls e -fls . Se você pode decidir qual formato usar para a saída de localização, normalmente é melhor usar ‘ \ 0 ‘ como um terminador do que usar nova linha, pois os nomes dos arquivos podem conter espaço em branco e caracteres de nova linha. A configuração da variável de ambiente ‘ LC_CTYPE ‘ é usada para determinar quais caracteres precisam ser citados.
-print , -fprintA citação é tratada da mesma maneira que para -printf e -fprintf . Se você estiver usando find em um script ou em uma situação em que os arquivos correspondentes possam ter nomes arbitrários, considere usar -print0 em vez de -print .

As ações -ok e -okdir imprimem o nome do arquivo atual como está.

Operadores

Os seguintes operadores de localização são listados em ordem crescente de precedência:

( expr )Forçar precedência. Como os parênteses são especiais para o shell, você normalmente precisará citá-los. Por exemplo, você provavelmente precisará especificar ‘ \ (… \) ‘ em vez de ‘ (…) ‘.
! exprRetorna true se expr for false. Esse personagem também geralmente precisará de proteção contra a interpretação do shell.
-not exprO mesmo que ! expr , mas não compatível com POSIX.
expr1 expr2Duas expressões seguidas são usadas para serem unidas com um “e” implícito; em outras palavras, expr2 não é avaliado se expr1 for falso.
expr1 -a expr2O mesmo que expr1 expr2 .
expr1 – e expr2O mesmo que expr1 expr2 , mas não compatível com POSIX.
expr1 -o expr2OR booleano; em outras palavras, expr2 não é avaliado se expr1 for verdadeiro.
expr1 -ou expr2O mesmo que expr1 -o expr2 , mas não compatível com POSIX.
expr1 , expr2A separação de duas expressões por vírgula as trata como uma lista: expr1 e expr2 são sempre avaliadas. O valor de expr1 é descartado no valor de retorno; o valor da lista é o valor de expr2 . O operador de vírgula pode ser útil para procurar diferentes tipos de coisas, mas percorrer a hierarquia do sistema de arquivos apenas uma vez. A ação -fprintf pode ser usada para listar os vários itens correspondentes em diferentes arquivos de saída.

variáveis ​​ambientais

LANGFornece um valor padrão para as variáveis ​​de internacionalização não configuradas ou nulas.
LC_ALLSe definido como um valor de sequência não-vazio, o valor dessa variável substituirá os valores de todas as outras variáveis ​​de internacionalização.
LC_COLLATEO padrão POSIX especifica que essa variável afeta a correspondência de padrões a ser usada para a opção -name . O GNU find usa a função de biblioteca fnmatch , e assim o suporte para ‘ LC_COLLATE ‘ depende da biblioteca do sistema. Essa variável também afeta a interpretação da resposta a -ok ; enquanto a variável ‘ LC_MESSAGES ‘ seleciona o padrão real usado para interpretar a resposta a -ok , a interpretação de quaisquer expressões de colchetes no padrão será afetada por ‘ LC_COLLATE ‘.
LC_CTYPEEssa variável afeta o tratamento das classes de caracteres usadas nas expressões regulares e também com o teste -name , se a função da biblioteca fnmatch do sistema suportar isso. Essa variável também afeta a interpretação de qualquer classe de caractere nas expressões regulares usadas para interpretar a resposta ao prompt emitido por -ok . A variável de ambiente ‘ LC_CTYPE ‘ também afetará quais caracteres são considerados imprimíveis quando nomes de arquivos são impressos.
LC_MESSAGESDetermina o código do idioma a ser usado para mensagens internacionalizadas. Se a variável de ambiente ‘ POSIXLY_CORRECT ‘ for configurada, isso também determinará a interpretação da resposta ao prompt feita pela ação -ok .
NLSPATHDetermina a localização dos catálogos de mensagens de internacionalização.
CAMINHOAfeta os diretórios pesquisados ​​para encontrar os executáveis ​​chamados por -exec , -execdir , -ok e -okdir .
POSIXLY_CORRECTDetermina o tamanho do bloco usado por -ls e -fls . Se POSIXLY_CORRECT estiver definido, os blocos são unidades de 512 bytes. Caso contrário, são unidades de 1024 bytes.

A configuração dessa variável também desativa as mensagens de aviso (ou seja, implica -nowarn ) por padrão, porque o POSIX exige que, além da saída para -ok , todas as mensagens impressas no stderr sejam diagnósticas e resultem em um status de saída diferente de zero.

Quando POSIXLY_CORRECT não está definido, -perm + zzz é tratado como -perm / zzz se + zzz não for um modo simbólico válido. Quando POSIXLY_CORRECT é definido, essas construções são tratadas como um erro.

Quando POSIXLY_CORRECT é definido, a resposta ao prompt feito pela ação -ok é interpretada de acordo com o catálogo de mensagens do sistema, em oposição a de acordo com as próprias traduções de mensagens da localização.

TZAfeta o fuso horário usado para algumas das diretivas de formato relacionadas a hora de -printf e -fprintf .

Exemplos

  encontrar

Ao usar o linux, a execução do comando find sem nenhuma opção localizará e imprimirá uma lista de todos os arquivos dentro e abaixo do diretório atual. Isso inclui todos os arquivos em todos os subdiretórios do diretório atual.

  encontrar .

O mesmo que o comando acima. O ” . ” Informa explicitamente que você deseja que a pesquisa comece no diretório atual.

  encontrar .  / home / jeff / home / stacy

Localize e imprima todos os arquivos e diretórios dentro e abaixo de três diretórios iniciais diferentes: o diretório atual, / home / jeff e / home / stacy .

  encontre / usr / bin / usr / lib -name '* zip *'

Localize e imprima todos os arquivos e diretórios dentro e abaixo de um dos diretórios / usr / bin e / usr / lib, que contém o texto ” zip ” em qualquer lugar do nome do arquivo ou diretório.

  encontrar / casa / jeff / fruta |  grep 'apple'

Este comando diz para localizar e localizar uma lista completa de todos os arquivos dentro e abaixo do diretório / home / jeff / fruit , e canalizar essa lista para grep , que filtra qualquer nome de arquivo que não contenha o texto ” apple “.

  encontrar .  -name 'apple'

Localize e imprima uma lista de qualquer arquivo no diretório atual ou abaixo dele, com o nome exatamente ” apple “, todas em minúsculas.

  encontrar .  -iname 'maçã'

Localize e imprima uma lista de qualquer arquivo no diretório atual cujo nome seja ” apple ” ou abaixo dele, mas corresponda às letras que não diferenciam maiúsculas de minúsculas. Portanto, os arquivos ou diretórios denominados ” Apple “, ” ApplE ” e ” ApPLe ” serão todos listados por este comando.

  encontrar .  -name 'apple' - tipo f

Localize e imprima uma lista de arquivos no diretório atual ou abaixo dele, com o nome ” apple “; não exiba diretórios, soquetes ou outros tipos de arquivo não regulares.

  encontrar .  -name 'apple' - tipo d

Localize uma lista de diretórios impressos ou abaixo do diretório atual, cujo nome é ” apple “; não exiba arquivos regulares ou tipos de arquivos que não sejam entradas de diretório.

  encontrar .  -group dev

Localize e imprima uma lista de qualquer arquivo dentro ou abaixo do diretório atual cujo grupo proprietário é o grupo dev .

  encontrar .  -EU

Localize e imprima uma lista de qualquer arquivo no diretório atual ou abaixo dele e siga os links simbólicos . Em outras palavras, exiba informações sobre o arquivo ao qual um link simbólico vincula, em vez de informações sobre o próprio link simbólico.

  encontrar .  +1

Localize e imprima uma lista de qualquer arquivo no diretório atual que foi acessado pela última vez há mais de um dia ou abaixo dele.

  encontrar .  -atime -1

Localize e imprima uma lista de qualquer arquivo no diretório atual que foi acessado pela última vez há menos de um dia ou abaixo dele.

  encontrar .  -amin +5

Localize e imprima uma lista de qualquer arquivo no diretório atual que foi modificado há mais de 5 minutos ou abaixo dele.

  encontrar .  -amin -5

Localize e imprima uma lista de qualquer arquivo no diretório atual que foi modificado há menos de 5 minutos ou abaixo.

  encontrar .  -perm 754

Localize e imprima uma lista de qualquer arquivo no diretório atual ou cujos bits octais de permissão sejam 755 (o usuário pode ler, escrever e executar; os membros do grupo proprietário podem ler e executar; outros podem apenas ler). Para mais informações sobre bits de permissão, consulte chmod .

  encontrar .  -perma u = rwx, g = rx, o = r

O mesmo que o comando acima, mas usa uma representação simbólica dos bits de permissão. Observe que a notação simbólica usa um separador de vírgula e não contém espaços.

  encontrar .  -size + 1M -type f

Localize e imprima uma lista de qualquer arquivo comum no diretório atual ou abaixo, cujo tamanho seja maior que 1 megabyte.

  encontrar .  -size -5G -type f

Localize e imprima uma lista de qualquer arquivo comum no diretório atual ou abaixo dele, com tamanho inferior a 5 gigabytes.

  encontrar .  -user jeff

Localize e imprima uma lista de qualquer arquivo ou diretório dentro ou abaixo do diretório atual de propriedade do usuário jeff .

  encontrar .  -size + 1G -exec mv '{}' ~ / bigfiles \;

Localize todos os arquivos no diretório atual ou abaixo dele, cujo tamanho seja maior que 1 gigabyte, e execute o comando mv neles, movendo-os para o diretório bigfiles no diretório inicial. {} indica onde no comando o nome do arquivo correspondente deve ser colocado; ele deve ser colocado entre aspas para protegê-lo de ser mal interpretado pelo shell. Da mesma forma, o ponto e vírgula que encerra o comando deve ser escapado com uma barra invertida (” \; “).

  encontrar .  -size + 1G -print0 |  xargs -0 -I '{}' mv '{}' ~ / bigfiles

Localize qualquer arquivo no diretório atual ou abaixo dele, cujo tamanho seja maior que 1 gigabyte, em seguida, canalize essa lista para o comando xargs , que usa o comando mv para mover cada um desses arquivos para os bigfiles do diretório em seu diretório pessoal. Isso é semelhante ao comando acima, mas melhor por vários motivos. Primeiro, ele usa a opção -print0 para dizer ao find para criar sua lista separando cada nome de arquivo com um caractere nulo em vez de uma nova linha ; isso dificulta a leitura de uma lista para humanos, mas tem a vantagem de facilitar a análise de outro programa. Você sempre deve usar -print0 ao canalizar a saída para xargs .

Usar o xargs para executar comandos em todos os arquivos encontrados geralmente é melhor do que usar a opção find ‘s -exec, devido à maneira mais eficiente pela qual o xargs encadeia cada comando que gera.

O argumento -0 para xargs diz que ele espera o caractere nulo como separador de nome de arquivo (que especificamos com a opção find ‘s -print0 ).

A opção -I ‘{}’ diz ao xargs para substituir ” {} ” pelo nome de cada arquivo encontrado. Em seguida, formamos nosso comando usando {} onde queremos que o nome do arquivo apareça. Nós o colocamos entre aspas simples para protegê-lo do shell.

O xargs não espera um ponto-e-vírgula no final do comando, ao contrário de find -exec , portanto, ele não está incluído neste comando.

  encontrar .  -size + 1G -ok mv '{}' ~ / bigfiles \;

Usar -ok é o mesmo que usar -exec , mas você será solicitado a confirmar antes de cada comando ser executado.

  encontrar .  -name '* .jpg' -o -name '* .gif'

Localize todos os arquivos no diretório atual ou abaixo do sufixo ” .jpg ” ou ” .gif “. A opção -o funciona como um operador OR booleano ; se alguma das condições for verdadeira, o arquivo será incluído na lista.

  encontrar .  -maxdepth 2 -name '* .jpg'

Localize qualquer arquivo no diretório atual ou abaixo dele, com o sufixo ” .jpg “, mas limite a passagem do subdiretório para 2 níveis abaixo do diretório atual. Os subdiretórios com 3 ou mais níveis de profundidade não serão pesquisados.

  encontrar .  !  -name '* .jpg'

Localize qualquer arquivo no diretório atual ou abaixo dele, cujo sufixo não seja ” .jpg “. O ponto de exclamação (” ! “) Funciona como um operador booleano NOT; ele lista apenas arquivos para os quais a condição é falsa.

  encontre / tmp -name core -type f -print0 |  xargs -0 / bin / rm -f

Encontre os arquivos denominados core no diretório / tmp ou abaixo dele e exclua-os. O teste -name vem antes do teste -type para evitar a necessidade de chamar stat em todos os arquivos.

  encontre $ HOME -time 0

Procure por arquivos no seu diretório pessoal que foram modificados nas últimas vinte e quatro horas. Este comando funciona dessa maneira porque o tempo desde a última modificação de cada arquivo é dividido por 24 horas e o restante é descartado. Isso significa que, para corresponder a -mtime 0 , um arquivo precisará ter uma modificação no passado, menos de 24 horas atrás.

  encontre / sbin / usr / sbin -executable!  -legível

Procure por arquivos nos diretórios binários do superusuário, / sbin e / usr / sbin , executáveis, mas não legíveis.

Suprimindo mensagens de erro ao usar o find

Uma última dica para usar o find : você receberá uma mensagem de erro se encontrar um arquivo ou diretório que você não tem acesso para visualizar. A mensagem de erro ficará assim:

  find: `./tmp/sysfile-PKdhtXMmr18n ': permissão negada

Você pode não querer essas mensagens em sua saída; eles podem dificultar a análise dos resultados reais da localização .

Para esses exemplos, assumiremos que você está usando o bash como seu shell, que é o padrão no linux. Digamos que seu comando seja simples:

  encontrar .

Se os resultados deste comando apresentarem erros de ” Permissão negada “, a maneira mais simples de filtrá-los é enviá-los para / dev / null , que é o dispositivo no Linux que não aponta para lugar nenhum. Seu comando ficaria assim:

  encontrar .  2> / dev / null

Aqui, 2> é um operador especial no bash, que significa “redirecionar erro padrão”. Isso ocultará efetivamente todas as mensagens de erro da saída da localização.

Você pode não querer ocultar todas as mensagens de erro. E se houver outro erro de algum tipo? Você não deseja suprimir essas mensagens também. Nesse caso, você pode usar este comando:

  encontrar .  2> & 1 |  grep -v 'Permissão negada'

Aqui, 2> diz ao bash para redirecionar o erro padrão, e & 1 diz para usar a saída padrão como destino. Isso redireciona todas as mensagens de erro emitidas pelo find para saída padrão; isso parecerá o mesmo na tela do terminal, mas, combinando-os com a saída padrão, os tornamos filtráveis ​​pelo grep . Então, canalizamos a saída de find para grep , que corresponde ao inverso ( -v ) da nossa string, ‘Permission denied’ . O resultado é que ele exibe qualquer linha que não contenha essa sequência. Isso permite que você exiba seus resultados sem nenhuma mensagem de erro “Permissão negada”.

chmod – Altere as permissões de arquivos ou diretórios.
cpio – Copia arquivos para ou de arquivos.
localizar – Pesquise um banco de dados local para encontrar arquivos por nome.
ls – lista o conteúdo de um diretório ou diretórios.
sh – O interpretador de comandos do Bourne shell.
whereis – Localize os arquivos de página binário, de origem e manual de um comando.
what – Localize o binário de um comando.
xargs – Crie e execute comandos complexos e execute-os em vários arquivos.

18 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.