FIND(1) General Commands Manual FIND(1) NOME find - pesquisa por arquivos em uma hierarquia de diretorios SINOPSE find [-H] [-L] [-P] [-D opcoesdepuracao] [-Onivel] [ponto-de-partida...] [expressao] DESCRICAO Esta pagina de manual documenta a versao GNU do find. O GNU find pesquisa a arvore de diretorios enraizada em cada ponto de partida, avaliando a expressao dada da esquerda para a direita, de acordo com as regras de precedencia (consulte a secao OPERADORES), ate que o resultado seja conhecido (o lado esquerdo e falso para operacoes e, verdadeiro para ou), nesse ponto find passa para o proximo nome de arquivo. Se nenhum ponto de partida for especificado, `.' sera assumido. Se voce estiver usando find em um ambiente em que a seguranca e importante (por exemplo, se voce estiver usando-o para pesquisar diretorios gravaveis por outros usuarios), leia o capitulo "Security Considerations" da documentacao do findutils, que e chamado Finding Files e vem com o findutils. Esse documento tambem inclui muito mais detalhes e discussao do que esta pagina de manual, portanto, voce pode encontrar uma fonte de informacao mais util. OPCOES As opcoes -H, -L e -P controlam o tratamento de links simbolicos. Os argumentos da linha de comando a seguir sao considerados nomes de arquivos ou diretorios a serem examinados, ate o primeiro argumento que comeca com "-" ou o argumento "(" ou "!". Esse argumento e os argumentos a seguir sao usados para ser a expressao que descreve o que deve ser pesquisado. Se nenhum caminho for fornecido, o diretorio atual sera usado. Se nenhuma expressao for fornecida, a expressao -print sera usada (mas voce provavelmente deve considerar usar -print0). Esta pagina de manual fala sobre "opcoes" na lista de expressoes. Essas opcoes controlam o comportamento do find, mas sao especificadas imediatamente apos o ultimo nome do caminho. As cinco opcoes "reais" -H, -L, -P, -D e -O devem aparecer antes do nome do primeiro caminho, se houver. Teoricamente, um traco duplo -- tambem pode ser usado para sinalizar que os argumentos restantes nao sao opcoes, mas Isso nao realmente funciona por causa da forma que o find determina o fim dos seguintes argumentos de caminho: ele faz isso lendo ate um argumento de expressao aparecer (que tambem inicia com um "-"). Agora, se um argumento de caminho iniciaria com um "-", find o trataria como argumento de expressao. Assim, para garantir que todos os pontos iniciais sejam considerados como tal e, especialmente, para evitar que os padroes de curinga expandidos pelo shell de chamada nao sejam tratados erroneamente como argumentos de expressao, geralmente e mais seguro prefixar curingas ou nomes de caminho duvidosos com "./" ou para usar nomes de caminho absolutos comecando com "/". Alternativamente, e geralmente seguro, embora nao portatil, usar a opcao GNU -files0-from para passar pontos de partida arbitrarios para find. -P Nunca segue links simbolicos. Esse e o comportamento padrao. Quando find examina ou imprime informacoes sobre um arquivo, e o arquivo e um link simbolico, as informacoes utilizadas devem ser obtidas das propriedades do proprio link simbolico. -L Segue os links simbolicos. Quando find examina ou imprime informacoes sobre arquivos, as informacoes usadas devem ser obtidas das propriedades do arquivo para o qual o link aponta, nao do proprio link (a menos que seja um link simbolico quebrado ou find nao possa para examinar o arquivo para o qual o link aponta). O uso dessa opcao implica em -noleaf. Se voce em seguida usar a opcao -P, -noleaf ainda estara em vigor. Se -L estiver em vigor e find descobrir um link simbolico para um subdiretorio durante sua pesquisa, o subdiretorio apontado pelo link simbolico sera pesquisado. Quando a opcao -L estiver em vigor, o predicado -type sempre correspondera ao tipo de arquivo ao qual um link simbolico aponta e nao ao proprio link (a menos que o link simbolico esteja quebrado). Acoes que podem causar quebra de links simbolicos enquanto find esta em execucao (por exemplo, -delete) podem gerar um comportamento confuso. O uso de -L faz com que os predicados -lname e -ilname sempre retornem false. -H Nao segue os links simbolicos, exceto durante o processamento dos argumentos da linha de comandos. Quando find examina ou imprime informacoes sobre arquivos, as informacoes usadas devem ser obtidas das propriedades do proprio link simbolico. A unica excecao a esse comportamento e quando um arquivo especificado na linha de comando e um link simbolico e o link pode ser resolvido. Para essa situacao, as informacoes usadas sao obtidas de qualquer ponto para o qual o link aponta (ou seja, o link e seguido). As informacoes sobre o proprio link sao usadas como fallback se o arquivo apontado pelo link simbolico nao puder ser examinado. Se -H estiver em vigor e um dos caminhos especificados na linha de comando for um link simbolico para um diretorio, o conteudo desse diretorio sera examinado (embora, e claro, -maxdepth 0 evite isso). Se mais de uma opcao de -H, -L e -P for especificada, cada uma substituira as outras; a ultima que aparece na linha de comando entra em vigor. Como e o padrao, a opcao -P deve ser considerada em vigor, a menos que -H ou -L sejam especificados. O GNU find frequentemente estatisticas arquivos durante o processamento da propria linha de comando, antes de qualquer pesquisa ter comecado. Essas opcoes tambem afetam como esses argumentos sao processados. Especificamente, existem varios 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 sera examinado e algumas de suas propriedades serao salvas. Se o arquivo nomeado e de fato um link simbolico e a opcao -P esta em vigor (ou se -H nem -L foram especificados), as informacoes usadas para a comparacao serao obtidas das propriedades do link simbolico. Caso contrario, ele sera retirado das propriedades do arquivo para o qual o link aponta. Se find nao puder seguir o link (por exemplo, porque possui privilegios insuficientes ou o link aponta para um arquivo inexistente), as propriedades do proprio link serao usadas. Quando as opcoes -H ou -L estiverem em vigor, quaisquer links simbolicos listados como argumento de -newer serao desreferenciados e o carimbo de data e hora sera retirado do arquivo para o qual o link simbolico aponta. A mesma consideracao se aplica a -newerXY, -anewer e -cnewer. A opcao -follow tem um efeito semelhante a -L, embora tenha efeito no ponto em que aparece (ou seja, se -L nao for usado, mas -follow for, quaisquer links simbolicos que aparecam depois de -follow na linha de comando serao desreferenciados, e aqueles antes dele nao serao). -D opcoes-de-depuracao Imprime informacoes de diagnostico; isso pode ser util para diagnosticar problemas com os motivos pelos quais find nao esta fazendo o que voce deseja. A lista de opcoes de depuracao deve ser separada por virgula. A compatibilidade das opcoes de depuracao nao e garantida entre os lancamentos do findutils. Para obter uma lista completa das opcoes de depuracao validas, consulte a saida de find -D help. Opcoes de depuracao validas incluem exec Mostra informacoes de diagnostico relacionadas a -exec, -execdir, -ok e -okdir opt Imprime informacoes de diagnostico relacionadas a otimizacao da arvore de expressoes; veja a opcao -O. rates Imprime um resumo indicando com que frequencia cada predicado teve exito ou falhou. search Navega na arvore de diretorios verbalmente. stat As mensagens de impressao como arquivos sao examinadas com as chamadas do sistema stat e lstat. O programa find tenta minimizar essas chamadas. tree Mostra a arvore de expressao em sua forma original e otimizada. all Habilita todas as outras opcoes de depuracao (exceto help). help Explica as opcoes de depuracao. -Onivel Habilita a otimizacao de consultas. O programa find reordena os testes para acelerar a execucao, preservando o efeito geral; isto e, predicados com efeitos colaterais nao sao reordenados em relacao um ao outro. As otimizacoes executadas em cada nivel de otimizacao sao as seguintes. 0 Equivalente ao nivel de otimizacao 1. 1 Este e o nivel de otimizacao padrao e corresponde ao comportamento tradicional. As expressoes sao reordenadas para que os testes baseados apenas nos nomes dos arquivos (por exemplo, -name e -regex) sejam executados primeiro. 2 Todos os testes -type ou -xtype sao executados apos quaisquer testes baseados apenas nos nomes dos arquivos, mas antes de qualquer teste que exija informacoes do no-i. Em muitas versoes modernas do Unix, os tipos de arquivo sao retornados por readdir() e, portanto, esses predicados sao mais rapidos de avaliar do que os predicados que precisam declarar o arquivo primeiro. Se voce usar o predicado com -fstype FOO e especificar um sistema de arquivos tipo FOO que nao seja conhecido (ou seja, presente em `/etc/mtab') no momento em que find for iniciado, esse predicado e equivalente a -false. 3 Nesse nivel de otimizacao, o otimizador de consultas completo baseado em custos esta ativado. A ordem dos testes e modificada para que os testes baratos (ou seja, rapidos) sejam executados primeiro e os mais caros sejam realizados posteriormente, se necessario. Dentro de cada faixa de custo, os predicados sao avaliados mais cedo ou mais tarde, de acordo com a probabilidade de exito ou nao. Para -o, os predicados com probabilidade de exito sao avaliados anteriormente e para -a, os predicados com probabilidade de falha sao avaliados anteriormente. O otimizador baseado em custos tem uma ideia fixa da probabilidade de um determinado teste ser bem-sucedido. Em alguns casos, a probabilidade leva em consideracao a natureza especifica do teste (por exemplo, presume-se que -type f seja mais provavel que seja bem-sucedido que -type c) O otimizador baseado em custos esta sendo avaliado no momento. Se, na verdade, nao melhorar o desempenho de find, ele sera removido novamente. Por outro lado, otimizacoes que provam ser confiaveis, robustas e eficazes podem ser ativadas em niveis mais baixos de otimizacao ao longo do tempo. No entanto, o comportamento padrao (ou seja, nivel de otimizacao 1) nao sera alterado na serie de versoes 4.3.x. O conjunto de testes do findutils executa todos os testes em find em cada nivel de otimizacao e garante que o resultado seja o mesmo. A reordenacao de operacoes executadas pelo otimizador baseado em custo pode resultar em mudanca de comportamento visivel ao usuario. Por exemplo, os predicados -readable e -empty sao sensiveis a reordenacao. Se eles forem executados na ordem -empty -readable, uma mensagem de erro sera emitida para diretorios ilegiveis. Se eles forem executados na ordem -readable -empty, nenhuma mensagem de erro sera emitida. Esta e a razao pela qual tal reordenacao de operacao nao e executada no nivel de otimizacao padrao. EXPRESSAO A parte da linha de comando apos a lista de pontos de partida e a expressao. Esse e um tipo de especificacao de consulta que descreve como correspondemos aos arquivos e o que fazemos com os arquivos correspondentes. Uma expressao e composta por uma sequencia de coisas: Testes Os testes retornam um valor verdadeiro ou falso, geralmente com base em alguma propriedade de um arquivo que estamos considerando. O teste -empty, por exemplo, e verdadeiro apenas quando o arquivo atual esta vazio. Acoes As acoes tem efeitos colaterais (como imprimir algo na saida padrao) e retornam verdadeiro ou falso, geralmente com base no exito ou nao delas. A acao -print, por exemplo, imprime o nome do arquivo atual na saida padrao. Opcoes globais As opcoes globais afetam a operacao de testes e acoes especificados em qualquer parte da linha de comandos. As opcoes globais sempre retornam verdadeiras. A opcao -depth, por exemplo, faz com que find percorra o sistema de arquivos em uma ordem profunda. Opcoes posicionais As opcoes posicionais afetam apenas testes ou acoes que os seguem. As opcoes posicionais sempre retornam verdadeiras. A opcao -regextype, por exemplo, e posicional, especificando o dialeto da expressao regular para expressoes regulares que ocorrem posteriormente na linha de comando. Operadores Os operadores juntam os outros itens da expressao. Eles incluem, por exemplo, -o (significando OU logico) e -a (significando E logico). Onde um operador esta ausente, -a e presumido. A acao -print e realizada em todos os arquivos para os quais toda a expressao e verdadeira, a menos que ela contenha uma acao alem de -prune ou -quit. As acoes que inibem o -print padrao sao -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print e -printf. A acao -delete tambem atua como uma opcao (uma vez que implica -depth). OPCOES POSICIONAIS As opcoes posicionais sempre retornam verdadeiras. Eles afetam apenas os testes que ocorrem posteriormente na linha de comando. -daystart Mede tempos (para -amin, -atime, -cmin, -ctime, -mmin e -mtime) desde o inicio de hoje e nao 24 horas atras. Esta opcao afeta apenas os testes que aparecem mais tarde na linha de comando. -follow Descontinuada; use a opcao -L. Desreferencia links simbolicos. Implica -noleaf. A opcao -follow afeta apenas os testes que aparecem depois na linha de comando. A menos que a opcao -H ou -L tenha sido especificada, a posicao da opcao -follow altera o comportamento do predicado -newer; todos os arquivos listados como argumento de -newer serao desreferenciados se forem links simbolicos. A mesma consideracao se aplica a -newerXY, -anewer e -cnewer. Da mesma forma, o predicado -type sempre correspondera ao tipo de arquivo ao qual um link simbolico aponta, em vez do proprio link. Usar -follow faz com que os predicados -lname e -ilname sempre retornem falso. -regextype tipo Altera a sintaxe da expressao regular entendida pelos testes -regex e -iregex que ocorrem posteriormente na linha de comando. Para ver quais tipos de expressao regular sao conhecidos, use -regextype help. A documentacao do Texinfo (consulte VEJA TAMBEM) explica o significado e as diferencas entre os varios tipos de expressao regular. Se voce nao usar esta opcao, find se comportara como se o tipo de expressao regular emacs tivesse sido especificado. -warn, -nowarn Ativa ou desativa as mensagens de aviso. Esses avisos se aplicam apenas ao uso da linha de comando, nao a quaisquer condicoes que find ao encontrar diretorios. O comportamento padrao corresponde a -warn se a entrada padrao for um tty e a -nowarn caso contrario. Se uma mensagem de aviso relacionada ao uso da linha de comandos for produzida, o status de saida de find nao sera afetado. Se a variavel de ambiente POSIXLY_CORRECT estiver configurada e -warn tambem for usado, nao sera especificado quais avisos, se houver algum, estarao ativos. OPCOES GLOBAIS As opcoes globais sempre retornam verdadeiras. As opcoes globais entram em vigor mesmo para testes que ocorrem anteriormente na linha de comando. Para evitar confusao, as opcoes globais devem ser especificadas na linha de comando apos a lista de pontos de partida, imediatamente antes do primeiro teste, opcao posicional ou acao. Se voce especificar uma opcao global em algum outro lugar, find emitira uma mensagem de aviso explicando que isso pode ser confuso. As opcoes globais ocorrem apos a lista de pontos de inicio e, portanto, nao sao o mesmo tipo de opcao que -L, por exemplo. -d Um sinonimo para -depth, para compatibilidade com FreeBSD, NetBSD, MacOS X e OpenBSD. -depth Processa o conteudo de cada diretorio antes do proprio diretorio. A acao de -delete tambem implica em -depth. -files0-from arquivo Leia os pontos de partida de arquivo em vez de obte-los na linha de comando. Em contraste com as limitacoes conhecidas de passar pontos de partida por meio de argumentos na linha de comando, a saber, a limitacao da quantidade de nomes de arquivo e a ambiguidade inerente de nomes de arquivo colidindo com nomes de opcao, usar esta opcao permite passar com seguranca um numero arbitrario de pontos de partida para find. Usar esta opcao e passar pontos de partida na linha de comando e mutuamente exclusivo e, portanto, nao e permitido ao mesmo tempo. O argumento arquivo e obrigatorio. Pode-se usar -files0-from - para ler a lista de pontos de partida do fluxo da entrada padrao e, por exemplo, de um pipe. Neste caso, as acoes -ok e -okdir nao sao permitidas, porque elas obviamente interfeririam na leitura de entrada padrao para obter uma confirmacao do usuario. Os pontos de partida em arquivo devem ser separados por caracteres ASCII NULO. Dois caracteres NULO consecutivos, ou seja, um ponto de partida com um nome de arquivo de comprimento Zero nao e permitido e levara a um diagnostico de erro seguido por um codigo de saida diferente de Zero mais tarde. No caso de arquivo fornecido estar vazio, find nao processa nenhum ponto de partida e, portanto, saira imediatamente apos analisar os argumentos do programa. Isso e diferente da invocacao padrao, onde find assume o diretorio atual como ponto de partida se nenhum argumento de caminho for passado. O processamento dos pontos de partida e, de outra forma, como de costume, por exemplo, find recursivamente em subdiretorios, a menos que seja impedido de outra forma. Para processar apenas os pontos de partida, pode-se passar adicionalmente -maxdepth 0. Outras notas: se um arquivo for listado mais de uma vez no arquivo de entrada, nao e especificado se ele e visitado mais de uma vez. Se o arquivo for mutado durante a operacao de find, o resultado tambem nao e especificado. Finalmente, a posicao de busca dentro do arquivo nomeado no momento em que find sai, seja com -quit ou de qualquer outra forma, tambem nao e especificada. Por "nao especificado" aqui entende-se que ele pode ou nao funcionar ou fazer qualquer coisa especifica, e que o comportamento pode mudar de plataforma para plataforma, ou de versao findutils para versao. -help, --help Imprime um resumo do uso da linha de comando de find e sai. -ignore_readdir_race Normalmente, find emite uma mensagem de erro quando falha ao declarar um arquivo. Se voce der essa opcao e um arquivo for excluido entre o momento em que find le o nome do arquivo no diretorio e o momento em que ele tenta estatiza-lo, nenhuma mensagem de erro sera emitida. Isso tambem se aplica a arquivos ou diretorios cujos nomes sao dados na linha de comando. Essa opcao entra em vigor no momento em que a linha de comando e lida, o que significa que voce nao pode procurar uma parte do sistema de arquivos com essa opcao ativada e outra parte com esta opcao desativada (se precisar fazer isso, sera necessario emitir dois comandos find em vez disso, um com a opcao e outro sem ela). Alem disso, find com a opcao -ignore_readdir_race ignorara os erros da acao -delete caso o arquivo tenha desaparecido desde que o diretorio pai foi lido: ele nao emitira um diagnostico de erro e o retorno o codigo da acao -delete sera verdadeiro. -maxdepth niveis Desce no maximo niveis (um numero inteiro nao negativo) de diretorios abaixo dos pontos de partida. -maxdepth 0 significa aplicar apenas os testes e acoes aos proprios pontos de partida. -mindepth niveis Nao aplica nenhum teste ou acao em niveis inferiores a niveis (um numero inteiro nao negativo). -mindepth 1 significa processar todos os arquivos, exceto os pontos de partida. -mount Nao desce diretorios em outros sistemas de arquivos. Um nome alternativo para -xdev, para compatibilidade com outras versoes do find. -noignore_readdir_race Desativa o efeito de -ignore_readdir_race. -noleaf Nao otimiza presumindo que os diretorios contenham 2 subdiretorios a menos do que a contagem de links fisicos. Essa opcao e necessaria ao pesquisar sistemas de arquivos que nao seguem a convencao de link de diretorio Unix, como sistemas de arquivos CD-ROM ou MS-DOS ou pontos de montagem de volume do AFS. Cada diretorio em um sistema de arquivos Unix normal possui pelo menos 2 links fisicos: seu nome e sua entrada ".". Alem disso, seus subdiretorios (se houver) possuem uma entrada ".." vinculada a esse diretorio. Quando find esta examinando um diretorio, depois de declarar 2 subdiretorios a menos que a contagem de links do diretorio, ele sabe que o restante das entradas no diretorio sao nao-diretorios (arquivos "folhas" na arvore de diretorios). Se apenas os nomes dos arquivos precisam ser examinados, nao ha necessidade de especifica-los; isso proporciona um aumento significativo na velocidade da pesquisa. -version, --version Imprime o numero de versao do find e sai. -xdev Nao desce diretorios em outros sistemas de arquivos. TESTES Alguns testes, por exemplo, -newerXY e -samefile, permitem a comparacao entre o arquivo que esta sendo examinado no momento e algum arquivo de referencia especificado na linha de comando. Quando esses testes sao usados, a interpretacao do arquivo de referencia e determinada pelas opcoes -H, -L e -P e qualquer -follow anterior, mas o arquivo de referencia e examinado apenas uma vez, no momento em que a linha de comando e analisada. Se o arquivo de referencia nao puder ser examinado (por exemplo, a chamada do sistema stat(2) falha para isso), uma mensagem de erro sera emitida e find saira com um status diferente de zero. Um argumento numerico n pode ser especificado para testes (como -amin, -mtime, -gid, -inum, -links, -size, -uid e -used) como +n para maior que n, -n para menor que n, n para exatamente n. Testes suportados: -amin n O arquivo foi acessado pela ultima vez ha menos, mais ou exatamente n minutos atras. -anewer referencia O horario do ultimo acesso ao arquivo atual e mais recente que o da ultima modificacao de dados do arquivo referencia. Se referencia for um link simbolico e a opcao -H ou -L estiver em vigor, sempre sera usado o horario da ultima modificacao de dados do arquivo para o qual ele aponta. -atime n O arquivo foi acessado pela ultima vez ha menos, mais ou exatamente n*24 horas atras. Quando find descobre quantos periodos de 24 horas atras o arquivo foi acessado pela ultima vez, qualquer parte fracionaria sera ignorada; portanto, para corresponder a -atime +1, um arquivo deve ter sido acessado pelo menos dois dias atras. -cmin n O status do arquivo foi alterado pela ultima vez ha menos, mais ou exatamente n minutos atras. -cnewer referencia O horario do ultima alteracao do status do arquivo atual e mais recente que o da ultima modificacao de dados do arquivo referencia. Se referencia for um link simbolico e a opcao -H ou -L estiver em vigor, sempre sera usado o horario da ultima modificacao de dados do arquivo para o qual ele aponta. -ctime n O status do arquivo foi alterado pela ultima vez ha menos, mais ou exatamente n*24 horas atras. Consulte os comentarios para -atime para entender como o arredondamento afeta a interpretacao dos tempos de alteracao do status do arquivo. -empty O arquivo esta vazio e e um arquivo comum ou um diretorio. -executable Corresponde a arquivos executaveis e diretorios pesquisaveis (no sentido da resolucao do nome do arquivo) pelo usuario atual. Isso leva em consideracao as listas de controle de acesso e outros artefatos de permissoes que o teste -perm ignora. Este teste utiliza a chamada de sistema access(2) e, portanto, pode ser enganado por servidores NFS que fazem o mapeamento de UID (ou esmagamento da raiz), pois muitos sistemas implementam access(2) no kernel do cliente e, portanto, nao pode fazer uso das informacoes de mapeamento do UID mantidas no servidor. Como esse teste e baseado apenas no resultado da chamada do sistema access(2), nao ha garantia de que um arquivo para o qual esse teste seja bem-sucedido possa realmente ser executado. -false Sempre falso. -fstype tipo O arquivo esta em um sistema de arquivos do tipo tipo. Os tipos de sistema de arquivos validos variam entre diferentes versoes do Unix; uma lista incompleta de tipos de sistemas de arquivos que sao aceitos em alguma versao do Unix ou em outra e: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Voce pode usar -printf com a diretiva %F para ver os tipos de seus sistemas de arquivos. -gid n O ID numerico do grupo do arquivo e menor, maior ou exatamente n. -group nome-grupo O arquivo pertence ao grupo nome-grupo (ID numerico do grupo permitido). -ilname padrao Como -lname, mas a correspondencia nao diferencia maiusculas de minusculas. Se a opcao -L ou -follow estiver em vigor, esse teste retornara false, a menos que o link simbolico esteja quebrado. -iname padrao Como -name, mas a correspondencia nao diferencia maiusculas de minusculas. Por exemplo, os padroes "fo*" e "F??" correspondem aos nomes de arquivo "Foo" , "FOO", "foo", "fOo" etc. O padrao "*foo*" tambem correspondera a um arquivo chamado ".foobar". -inum n O arquivo possui o numero de no-i menor, maior ou exatamente n. Normalmente, e mais facil usar o teste -samefile. -ipath padrao Como -path, mas a correspondencia nao diferencia maiusculas de minusculas. -iregex padrao Como -regex, mas a correspondencia nao diferencia maiusculas de minusculas. -iwholename padrao Veja -ipath. Esta alternativa e menos portatil que -ipath. -links n O arquivo possui n links fisico. -lname padrao O arquivo e um link simbolico cujo conteudo corresponde ao padrao de shell padrao. Os metacaracteres nao tratam "/" ou "." em especial. Se a opcao -L ou -follow estiver em vigor, esse teste retornara false, a menos que o link simbolico esteja quebrado. -mmin n Os dados do arquivo foram modificados pela ultima vez ha menos, mais ou exatamente n minutos atras. -mtime n Os dados do arquivo foram modificados pela ultima vez ha menor, mais ou exatamente n*24 horas atras. Consulte os comentarios para -atime para entender como o arredondamento afeta a interpretacao dos tempos de alteracao do status do arquivo. -name padrao A base do nome do arquivo (o caminho com os diretorios principais removidos) corresponde ao padrao de shell padrao. Como os diretorios principais dos nomes de arquivo sao removidos, o padrao nao deve incluir uma barra, porque `-name a/b' nunca correspondera a nada (e voce provavelmente deseja usar -path em vez disso). Uma excecao a isso e quando se usa apenas uma barra como padrao (`-name /'), porque essa e uma string valida para corresponder ao diretorio raiz "/" (porque o nome base de "/" e "/"). Um aviso e emitido se voce tentar passar um padrao contendo uma - mas nao consistindo somente de uma - barra, a menos que a variavel de ambiente POSIXLY_CORRECT esteja definida ou a opcao -nowarn seja usada. Para ignorar um diretorio e os arquivos nele, use -prune em vez de verificar todos os arquivos na arvore; veja um exemplo na descricao dessa acao. As chaves nao sao reconhecidas como especiais, apesar do fato de que alguns shells, incluindo o Bash, conferem as chaves um significado especial nos padroes de shell. A correspondencia do nome do arquivo e realizada com o uso da funcao da biblioteca fnmatch(3). Nao se esqueca de colocar o padrao entre aspas para protege-lo da expansao pelo shell. -newer referencia O horario do ultima modificacao dos dados do arquivo atual e mais recente que o da ultima modificacao de dados do arquivo referencia. Se referencia for um link simbolico e a opcao -H ou -L estiver em vigor, sempre sera usado o horario da ultima modificacao de dados do arquivo para o qual ele aponta. -newerXY referencia E bem-sucedido se o registro de data e hora X do arquivo que esta sendo considerado for mais novo que o registro de data e hora Y do arquivo referencia. As letras X e Y podem ser qualquer uma das seguintes letras: a O tempo de acesso do arquivo referencia B A tempo de criacao do arquivo referencia c O tempo de alteracao do status do no-i de referencia m A tempo de modificacao do arquivo referencia t referencia e interpretado diretamente como um tempo Algumas combinacoes sao invalidas; por exemplo, e invalido que X seja t. Algumas combinacoes nao sao implementadas em todos os sistemas; por exemplo, B nao e suportado em todos os sistemas. Se uma combinacao invalida ou nao suportada de XY for especificada, ocorrera um erro fatal. As especificacoes de tempo sao interpretadas como para o argumento da opcao -d do GNU date. Se voce tentar usar o tempo de criacao de um arquivo de referencia e o tempo de criacao nao puder ser determinado, uma mensagem de erro fatal sera exibida. Se voce especificar um teste que se refira ao tempo de criacao dos arquivos que estao sendo examinados, esse teste falhara nos arquivos em que o tempo de criacao seja desconhecido. -nogroup Nenhum grupo corresponde ao ID numero de grupo do arquivo. -nouser Nenhum usuario corresponde ao ID numero de usuario do arquivo. -path padrao O nome do arquivo corresponde ao padrao de shell padrao. Os metacaracteres de nao tratam "/" ou "." de forma especial; entao, por exemplo, find . -path "./sr*sc" vai exibir uma entrada para um diretorio chamado ./src/misc (se houver). Para ignorar uma arvore de diretorios inteira, use -prune em vez de verificar todos os arquivos na arvore. Observe que o teste de correspondencia de padroes se aplica a todo o nome do arquivo, iniciando em um dos pontos de inicio nomeados na linha de comandos. So faria sentido usar um nome de caminho absoluto aqui se o ponto inicial relevante tambem for um caminho absoluto. Isso significa que este comando nunca correspondera a nada: find bar -path /foo/bar/meuarquivo -print Find compara o argumento -path com a concatenacao de um nome de diretorio e o nome base do arquivo que esta sendo examinado. Como a concatenacao nunca termina com uma barra, os argumentos -path que terminam em uma barra nao correspondem a nada (exceto talvez um ponto inicial especificado na linha de comando). O predicado -path tambem e suportado pelo find de HP-UX e faz parte do padrao POSIX 2008. -perm modo Os bits de permissao do arquivo sao exatamente modo (octal ou simbolico). Como e necessaria uma correspondencia exata, se voce deseja usar este formulario para modos simbolicos, pode ser necessario especificar uma sequencia de modos bastante complexa. Por exemplo, "-perm g=w" correspondera apenas aos arquivos que possuem o modo 0020 (ou seja, aqueles para os quais a permissao de gravacao de grupo e a unica permissao definida). E mais provavel que voce queira usar as formas "/" ou "-", por exemplo "-perm -g=w", que corresponde a qualquer arquivo com permissao de gravacao em grupo. Veja a secao EXEMPLOS para alguns exemplos ilustrativos. -perm -modo Todos os bits de permissao modo sao definidos para o arquivo. Os modos simbolicos sao aceitos nesta forma, e geralmente e dessa maneira que voce deseja usa-los. Voce deve especificar "u", "g" ou "o" se usar um modo simbolico. Veja a secao EXEMPLOS para alguns exemplos ilustrativos. -perm /modo Qualquer um dos bits de permissao modo esta definido para o arquivo. Os modos simbolicos sao aceitos neste formulario. Voce deve especificar "u", "g" ou "o" se usar um modo simbolico. Veja a secao EXEMPLOS para alguns exemplos ilustrativos. Se nenhum bit de permissao em modo estiver definido, esse teste correspondera a qualquer arquivo (a ideia aqui e ser consistente com o comportamento de -perm -000). -perm +modo Isso nao e mais suportado (e esta descontinuado desde 2005). Use -perm /modo. -readable Corresponde a arquivos legiveis pelo usuario atual. Isso leva em consideracao as listas de controle de acesso e outros artefatos de permissoes que o teste -perm ignora. Este teste utiliza a chamada de sistema access(2) e, portanto, pode ser enganado pelos servidores NFS que fazem o mapeamento de UID (ou "root-squashing"), pois muitos sistemas implementam access(2) no kernel do cliente e, portanto, nao pode usar as informacoes de mapeamento do UID mantidas no servidor. -regex padrao O nome do arquivo corresponde a expressao regular padrao. Esta e uma correspondencia em todo o caminho, nao uma pesquisa. Por exemplo, para corresponder a um arquivo chamado ./fubar3, voce pode usar a expressao regular ".*bar." ou ".*b.*3", mas nao "f.*r3". As expressoes regulares entendidas por find sao por padrao expressoes regulares do Emacs (exceto que "." corresponde a caracteres de nova linhas), mas isso pode ser alterado com a opcao -regextype. -samefile nome O arquivo refere-se ao mesmo no-i que nome. Quando -L esta em vigor, isso pode incluir links simbolicos. -size n[cwbkMG] O arquivo usa menos, mais ou exatamente n unidades de espaco, arredondando para cima. Os seguintes sufixos podem ser usados: "b" para blocos de 512 bytes (este e o padrao se nenhum sufixo for usado) "c" para bytes "w" para palavras com 2 bytes "k" para kibibytes (KiB, unidades de 1024 bytes) "M" para mebibytes (MiB, unidades de 1024 * 1024 = 1048576 bytes) "G" para gibibytes (GiB, unidades de of * 1024 * 1024 = 1073741824 bytes) O tamanho e simplesmente o membro st_size do struct stat preenchido pela chamada do sistema lstat (ou stat), arredondado para cima, como mostrado acima. Em outras palavras, e consistente com o resultado obtido para ls -l. Lembre-se de 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 1024 bytes, o que e diferente do comportamento de -ls. Os prefixos + e - significam maior que e menor que, como de costume; ou seja, um tamanho exato de n unidades nao corresponde. Tenha em mente que o tamanho e arredondado para a proxima unidade. Portanto, -size -1M nao e equivalente a -size -1048576c. O primeiro corresponde apenas a arquivos vazios, o ultimo corresponde a arquivos de 0 a 1.048.575 bytes. -true Sempre verdadeiro. -type c Arquivo e do tipo c: b especial de bloco (com buffer) c especial de caractere (sem buffer) d diretorio p encadeamento com nome (FIFO) f arquivo regular l link simbolico; isso nunca e verdadeiro se a opcao -L ou a opcao -follow estiver em vigor, a menos que o link simbolico esteja quebrado. Se voce deseja procurar links simbolicos quando -L estiver em vigor, use -xtype. s socket D door (Solaris) Para procurar mais de um tipo de uma vez, voce pode fornecer a lista combinada de letras do tipo separadas por uma virgula "," (extensao GNU). -uid n O ID numerico do usuario do arquivo e menor que, maior que ou exatamente n. -used n O arquivo foi acessado pela ultima vez ha menos, mais ou exatamente n dias apos a ultima alteracao do status. -user nome-usuario O arquivo pertence ao usuario uname (ID numerico do usuario permitido). -wholename padrao Veja -path. Esta alternativa e menos portatil que -path. -writable Corresponde a arquivos gravaveis pelo usuario atual. Isso leva em consideracao as listas de controle de acesso e outros artefatos de permissoes que o teste -perm ignora. Este teste utiliza a chamada de sistema access(2) e, portanto, pode ser enganado pelos servidores NFS que fazem o mapeamento de UID (ou "root-squashing"), pois muitos sistemas implementam access(2) no kernel do cliente e, portanto, nao pode usar as informacoes de mapeamento do UID mantidas no servidor. -xtype c O mesmo que -type, a menos que o arquivo seja um link simbolico. Para links simbolicos: se a opcao -H ou -P foi especificada, verdadeiro se o arquivo for um link para um arquivo do tipo c; se a opcao -L tiver sido fornecida, verdadeiro se c for "l". Em outras palavras, para links simbolicos, -xtype verifica o tipo de arquivo que -type nao verifica. Se um link simbolico for quebrado (porque o objeto para o qual ele aponta nao existe ou o link aponta para si mesmo), entao -xtype se comportara da mesma forma que -type. -context padrao (SELinux somente) O contexto de seguranca do arquivo corresponde ao glob padrao. ACOES -delete Exclui arquivos ou diretorios; verdadeiro se a remocao for bem-sucedida. Se a remocao falhar, uma mensagem de erro sera emitida e o status de saida do find sera diferente de zero (quando eventualmente sair). Aviso: Nao se esqueca de que find avalia a linha de comando como uma expressao, portanto, colocar -delete primeiro fara com que find tente excluir tudo abaixo dos pontos iniciais especificados. O uso da acao -delete na linha de comando ativa automaticamente a opcao -depth. Como por sua vez -depth torna -prune ineficaz, a acao -delete nao pode ser combinada de forma util com -prune. Frequentemente, o usuario pode querer testar uma linha de comando find com -print antes de adicionar -delete para a execucao de remocao real. Para evitar resultados surpreendentes, geralmente e melhor lembrar de usar -depth explicitamente durante essas execucoes de teste anteriores. A acao -delete vai falhar para remover um diretorio a menos que esteja vazia. Junto com a opcao -ignore_readdir_race, find ignorara os erros da acao -delete caso o arquivo tenha desaparecido desde que o diretorio pai foi lido: ele nao emitira um diagnostico de erro, nao alterara o codigo de saida para diferente de zero e o retorno o codigo da acao -delete sera verdadeiro. -exec comando ; Executa comando; verdadeiro se 0 status for retornado. Todos os argumentos a seguir para find sao considerados argumentos para o comando ate um argumento que consiste em ";" e encontrado. A string "{}" e substituida pelo nome do arquivo atual sendo processado em todos os lugares em que ocorre nos argumentos do comando, nao apenas nos argumentos em que esta sozinho, como em algumas versoes de find. Ambas as construcoes podem precisar ser escapadas (com um "\") ou citadas para protege-las da expansao pelo shell. Consulte a secao EXEMPLOS para exemplos de uso da opcao -exec. O comando especificado e executado uma vez para cada arquivo correspondente. O comando e executado no diretorio inicial. Existem problemas de seguranca inevitaveis em torno do uso da acao -exec; voce deve usar a opcao -execdir. -exec comando {} + Essa variante da acao -exec executa o comando especificado nos arquivos selecionados, mas a linha de comando e construida anexando cada nome de arquivo selecionado no final; o numero total de invocacoes do comando sera muito menor que o numero de arquivos correspondentes. A linha de comando e construida da mesma maneira que xargs constroi suas linhas de comando. Apenas uma instancia de "{}" e permitida dentro do comando e deve aparecer no final, imediatamente antes do "+"; ele precisa ser escapado (com um "\") ou entre aspas para protege-lo da interpretacao pelo shell. O comando e executado no diretorio inicial. Se alguma chamada com a forma "+" retornar um valor diferente de zero como status de saida, find retornara um status de saida diferente de zero. Se find encontrar um erro, as vezes pode causar uma saida imediata, portanto, alguns comandos pendentes podem nao ser executados. Por este motivo, -exec meu-comando ... {} + -quit pode nao resultar em meu-comando ser executado. Esta variante de -exec sempre retorna verdadeiro. -execdir comando ; -execdir comando {} + Como -exec, mas o comando especificado e executado no subdiretorio que contem o arquivo correspondente, que normalmente nao e o diretorio no qual voce iniciou o find. Assim como com -exec, o {} deve ser citado se find estiver sendo chamado de um shell. Esse e um metodo muito mais seguro para chamar comandos, pois evita condicoes de corrida durante a resolucao dos caminhos para os arquivos correspondentes. Assim como na acao -exec, o formulario "+" de -execdir criara uma linha de comando para processar mais de um arquivo correspondente, mas qualquer chamada de comando listara apenas os arquivos existentes no o mesmo subdiretorio. Se voce usar esta opcao, assegure-se de que sua variavel de ambiente PATH nao faca referencia a "."; caso contrario, um invasor podera executar qualquer comando que desejar, deixando um arquivo com nome apropriado em um diretorio no qual voce executara -execdir. O mesmo se aplica a ter entradas em PATH vazias ou que nao sejam nomes de diretorio absolutos. Se qualquer chamada com a forma "+" retornar um valor diferente de zero como status de saida, find retornara um status de saida diferente de zero. Se find encontrar um erro, as vezes isso pode causar uma saida imediata; portanto, alguns comandos pendentes podem nao ser executados. O resultado da acao depende se a variante + ou ; esta sendo usada; -execdir comando {} + sempre retorna verdadeiro, enquanto -execdir comando {} ; retorna verdadeiro somente se comando retornar 0. -fls arquivo Verdadeiro; como -ls, mas escreve para arquivo como -fprint. O arquivo de saida e sempre criado, mesmo que o predicado nunca seja correspondido. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -fprint arquivo Verdadeiro; imprime o nome completo do arquivo no arquivo arquivo. Se arquivo nao existe quando find for executado, ele sera criado; se existir, sera truncado. Os nomes de arquivo /dev/stdout e /dev/stderr sao tratados de forma especial; eles se referem a saida padrao e a saida de erro padrao, respectivamente. O arquivo de saida e sempre criado, mesmo que o predicado nunca seja correspondido. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -fprint0 arquivo Verdadeiro; como -print0, mas escreva para arquivo como -fprint. O arquivo de saida e sempre criado, mesmo que o predicado nunca seja correspondido. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -fprintf arquivo formato Verdadeiro; como -printf, mas escreva para arquivo como -fprint. O arquivo de saida e sempre criado, mesmo que o predicado nunca seja correspondido. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -ls Verdadeiro; lista o arquivo atual no formato ls -dils na saida padrao. As contagens de blocos sao de blocos de 1 KB, a menos que a variavel de ambiente POSIXLY_CORRECT esteja configurada; nesse caso, blocos de 512 bytes sao usados. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -ok comando ; Como -exec, mas pergunta ao usuario primeiro. Se o usuario concordar, executa o comando. Caso contrario, so retorna falso. Se o comando for executado, sua entrada padrao sera redirecionada de /dev/null. Esta acao nao pode ser especificada junto com a opcao -files0-from. A resposta ao prompt e comparada com um par de expressoes regulares para determinar se e uma resposta afirmativa ou negativa. Essa expressao regular e obtida do sistema se a variavel de ambiente POSIXLY_CORRECT estiver configurada ou, caso contrario, das traducoes de mensagens de find. Se o sistema nao tiver uma definicao adequada, a propria definicao de find sera usada. Nos dois casos, a interpretacao da propria expressao regular sera afetada pelas variaveis de ambiente LC_CTYPE (classes de caracteres) e LC_COLLATE (classes de equivalencia e intervalos de caracteres). -okdir comando ; Como -execdir, mas pergunta ao usuario primeiro na mesma forma que para -ok. Se o usuario nao concordar, so retorna falso. Se o comando for executado, sua entrada padrao sera redirecionada de /dev/null. Esta acao nao pode ser especificada junto com a opcao -files0-from. -print Verdadeiro; imprime o nome completo do arquivo na saida padrao, seguido por uma nova linha. Se voce estiver canalizando a saida de find para outro programa e houver a menor possibilidade de que os arquivos que voce esta procurando possam conter uma nova linha, considere seriamente usar a opcao -print0 em vez de -print. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -print0 Verdadeiro; imprime o nome completo do arquivo na saida padrao, seguido por um caractere nulo (em vez do caractere de nova linha que -print usa). Isso permite que nomes de arquivos que contenham novas linhas ou outros tipos de espaco em branco sejam corretamente interpretados por programas que processam a saida do find. Esta opcao corresponde a opcao -0 de xargs. -printf formato Verdadeiro; imprime formato na saida padrao, interpretando os escapes "\" e a diretivas "%". As larguras e precisoes dos campos podem ser especificadas como na funcao C printf(3). Observe que muitos dos campos sao impressos como %s em vez de %d, e isso pode significar que os sinalizadores nao funcionam conforme o esperado. Isso tambem significa que o sinalizador "-" funciona (forca os campos a serem alinhados a esquerda). Diferentemente de -print, -printf nao adiciona uma nova linha no final da string. Os escapes e as diretrizes sao: \a Bipe de alarme. \b Backspace. \c Para de imprimir deste formato imediatamente e limpa a saida. \f Alimentacao de formulario. \n Nova linha. \r Carriage return. \t Tabulacao horizontal. \v Tabulacao vertical. \0 ASCII NULO \\ A versao literal de uma barra invertida ("\"). \NNN O caractere cujo codigo ASCII e NNN (octal). Um caractere "\" seguido por qualquer outro caractere e tratado como caractere comum, portanto, ambos sao impressos. %% Um sinal de porcentagem literal. %a Hora do ultimo acesso do arquivo no formato retornado pela funcao C ctime(3). %Ak Hora do ultimo acesso do arquivo no formato especificado por k, que e "@" ou uma diretiva para a funcao C strftime(3). A seguir e mostrada uma lista incompleta de valores possiveis para k. Por favor, consulte a documentacao de strftime(3) para a lista completa. Alguns dos caracteres de especificacao de conversao podem nao estar disponiveis em todos os sistemas, devido a diferencas na implementacao da funcao de biblioteca strftime(3). @ segundos desde 1o de jan, 1970, 00:00 GMT, com parte fracionaria. Campos de tempo: H hora (00..23) I hora (01..12) k hora ( 0..23) l hora ( 1..12) M minuto (00..59) p AM ou PM da localidade r tempo no formato 12 horas (hh:mm:ss [AP]M) S Segundo (00.00 .. 61.00). Ha uma parte fracionaria. T tempo no formato 24 horas (hh:mm:ss.xxxxxxxxxx) + Data e hora, separadas por "+", por exemplo "2004-04-28+22:22:05.0". Esta e uma extensao GNU. O tempo e dado no fuso horario atual (que pode ser afetado pela configuracao da variavel de ambiente TZ). O campo segundos inclui uma parte fracionaria. X representacao do tempo da localidade (H:M:S). O campo segundos inclui uma parte fracionaria. Z fuso horario (por exemplo, EDT) ou nada se nenhum fuso horario for determinavel Campos de data: a nome abreviado do dia da semana da localidade (dom..sab) A nome completo do dia da semana da localidade (domingo..sabado) b nome abreviado do dia do mes da localidade (jan..dez) B nome completo do dia do mes da localidade (janeiro..dezembro) c data e hora do local (sab 04 nov 10:02:33 1989). O formato e o mesmo que para ctime(3) e, para preservar a compatibilidade com esse formato, nao ha parte fracionaria no campo segundos. d dia do mes (01..31) D data (mm/dd/yy) F date (yyyy-mm-dd) h mesmo que b j dia do ano (001..366) m mes (01..12) U numero da semana do ano com domingo como primeiro dia da semana (00..53) w dia da semana (0..6) W numero da semana do ano com segunda-feira como primeiro dia da semana (00..53) x representacao de data da localidade (dd/mm/yyyy) y ultimos dois digitos do ano (00..99) Y ano (1970...) %b A quantidade de espaco em disco usada para esse arquivo em blocos de 512 bytes. Como o espaco em disco e alocado em multiplos do tamanho do bloco do sistema de arquivos, geralmente e maior que %s/512, mas tambem pode ser menor se o arquivo for um arquivo esparso. %Bk Hora da criacao do arquivo, no formato especificado por k, que e o mesmo que para %A. Esta diretiva produz uma string vazia se o sistema operacional ou sistema de arquivos subjacente nao suportar horas de nascimento. %c Hora do ultimo tempo de alteracao do arquivo no formato retornado pela funcao C ctime(3). %Ck Tempo da ultima alteracao de status do arquivo no formato especificado por k, que e o mesmo que para %A. %d Profundidade do arquivo na arvore de diretorios; 0 significa que o arquivo e um ponto de partida. %D O numero do dispositivo no qual o arquivo existe (o campo st_dev da estrutura stat), em decimal. %f Imprime o nome base; o nome do arquivo com quaisquer diretorios principais removidos (apenas o ultimo elemento). Para /, o resultado e "/". Veja a secao EXEMPLOS para um exemplo. %F Tipo do sistema de arquivos em que o arquivo esta; esse valor pode ser usado para -fstype. %g Nome do grupo do arquivo ou ID numerico do grupo, se o grupo nao tiver um nome. %G O ID numerico do grupo do arquivo. %h Dirname; os diretorios principais do nome do arquivo (todos, exceto o ultimo elemento). Se o nome do arquivo nao contem barras (ja que esta no diretorio atual), o especificador %h se expande para ".". Para arquivos que sao diretorios e contem uma barra (incluindo /), %h se expande para a string vazia. Veja a secao EXEMPLOS para um exemplo. %H Ponto de partida em que arquivo foi encontrado. %i Numero do no-i do arquivo (em decimal). %k A quantidade de espaco em disco usada para esse arquivo em blocos de 1 KB. Como o espaco em disco e alocado em multiplos do tamanho do bloco do sistema de arquivos, geralmente e maior que %s/1024, mas tambem pode ser menor se o arquivo for um arquivo esparso. %l Objeto do link simbolico (string vazia se o arquivo nao for um link simbolico). %m Bits de permissao do arquivo (em octal). Esta opcao usa os numeros "tradicionais" usados pela maioria das implementacoes do Unix, mas se a sua implementacao especifica usa uma ordem incomum de bits de permissoes octais, voce vera uma diferenca entre o valor real do modo do arquivo e a saida de %m. Normalmente, voce deseja ter um zero a esquerda nesse numero e, para fazer isso, use o sinalizador # (como em, por exemplo, "%#m"). %M Permissoes do arquivo (em forma simbolica, como para ls). Esta diretiva e suportada no findutils 4.2.5 e posterior. %n Numero de links fisicos para o arquivo. %p Nome do arquivo. %P Nome do arquivo com o nome do ponto de partida sob o qual foi encontrado removido. %s Tamanho do arquivo em bytes. %S Escassez de arquivo. Isso e calculado como (TAMBLOCO*st_blocks/st_size). O valor exato que voce obtera para um arquivo comum de um determinado comprimento depende do sistema. No entanto, arquivos normalmente esparsos terao valores menores que 1.0 e arquivos que usam blocos indiretos podem ter um valor maior que 1.0. Em geral, o numero de blocos usados por um arquivo depende do sistema de arquivos. O valor usado para TAMBLOCO depende do sistema, mas geralmente e de 512 bytes. Se o tamanho do arquivo for zero, o valor impresso sera indefinido. Em sistemas que nao tem suporte a st_blocks, a escassez de um arquivo e presumida como 1.0. %t Hora da ultima modificacao do arquivo no formato retornado pela funcao C ctime(3). %Tk Tempo da ultima modificacao do arquivo no formato especificado por k, que e o mesmo que para %A. %u Nome do usuario do arquivo ou ID numerico do usuario, se o usuario nao tiver um nome. %U O ID numerico do usuario do arquivo. %y Tipo do arquivo (como em ls -l), U=tipo desconhecido (nao deveria ocorrer) %Y Tipo do arquivo (como %y), somado a seguir links simbolicos: "L"=repeticao, "N"=nao existente, "?" para qualquer outro erro ao determinar o tipo do alvo de um link simbolico. %Z (apenas SELinux) contexto de seguranca do arquivo. %{ %[ %( Reservado para uso futuro. Um caractere "%" seguido por qualquer outro caractere e descartado, mas o outro caractere e impresso (nao conte com isso, pois outros caracteres de formato podem ser introduzidos). Um "%" no final do argumento de formato causa um comportamento indefinido, pois nao ha caractere seguinte. Em algumas localidades, ele pode ocultar as chaves da porta, enquanto em outros pode remover a pagina final do romance que voce esta lendo. As diretivas %m e %d suportam os sinalizadores #, 0 e +, mas as outras diretivas nao, mesmo que imprimam numeros. As diretivas numericas que nao suportam esses sinalizadores incluem G, U, b, D, k e n. O sinalizador de formato "-" e suportado e muda o alinhamento de um campo de justificado a direita (que e o padrao) para justificado a esquerda. Consulte a secao NOMES DE ARQUIVOS INCOMUNS para obter informacoes sobre como os caracteres incomuns nos nomes de arquivos sao tratados. -prune Verdadeiro; se o arquivo for um diretorio, nao entra nele. Se -depth for dado, entao -prune tem nenhum efeito. Porque -delete implica em -depth, voce nao pode usar de forma util -prune e -delete juntos. Por exemplo, para pular o diretorio src/emacs e todos os arquivos e diretorios dentro dele, e imprimir os nomes dos outros arquivos encontrados, faca algo como isso aqui: find . -path ./src/emacs -prune -o -print -quit Sai imediatamente (com valor de retorno zero se nenhum erro tiver ocorrido). Isso e diferente de -prune porque -prune so se aplica ao conteudo de diretorios removidos, enquanto -quit simplesmente faz com que find pare imediatamente. Nenhum processo filho sera deixado em execucao. Quaisquer linhas de comando que foram criadas por -exec ... + ou -execdir ... + sao invocadas antes de o programa ser encerrado. Depois que -quit for executado, nenhum outro arquivo especificado na linha de comando sera processado. Por exemplo, `find /tmp/foo /tmp/bar -print -quit` imprimira apenas `/tmp/foo`. Um uso comum de -quit e parar de pesquisar o sistema de arquivos assim que encontrarmos o que queremos. Por exemplo, se quisermos encontrar apenas um unico arquivo, podemos fazer o seguinte: find / -name agulha -print -quit OPERADORES Listados em ordem decrescente de precedencia: ( expr ) Forca a precedencia. Como os parenteses sao especiais para o shell, normalmente voce precisara coloca-los entre aspas. Muitos dos exemplos nesta pagina de manual usam barras invertidas para este proposito: "\(...\)" em vez de "(...)". ! expr Verdadeiro se expr for falso. Esse caractere geralmente tambem precisara de protecao contra interpretacao pelo shell. -not expr Mesmo que ! expr, mas nao compativel com POSIX. expr1 expr2 Duas expressoes em uma linha sao consideradas unidas com um -a implicito; expr2 nao e avaliado se expr1 for falso. expr1 -a expr2 Mesmo que expr1 expr2. expr1 -and expr2 Mesmo que expr1 expr2, mas nao compativel com POSIX. expr1 -o expr2 Ou; expr2 nao e avaliado se expr1 for falso. expr1 -or expr2 Mesmo que expr1 -o expr2, mas nao compativel com POSIX. expr1 , expr2 Lista; ambos expr1 e expr2 sao sempre avaliados. O valor de expr1 e descartado; o valor da lista e o valor de expr2. O operador virgula pode ser util para pesquisar varios tipos diferentes de coisas, mas percorrer a hierarquia do sistema de arquivos apenas uma vez. A acao -fprintf pode ser usada para listar os varios itens correspondentes em varios arquivos de saida diferentes. Observe que -a quando especificado implicitamente (por exemplo, por dois testes que aparecem sem um operador explicito entre eles) ou explicitamente tem precedencia mais alta do que -o. Isso significa que find . -name arquivoa -o -name arquivob -print nunca imprimira um arquivoa. NOMES DE ARQUIVOS INCOMUNS Muitas das acoes de find resultam na impressao de dados que estao sob o controle de outros usuarios. Isso inclui nomes de arquivos, tamanhos, horarios de modificacao e assim por diante. Os nomes dos arquivos sao um problema potencial, pois podem conter qualquer caractere, exceto "\0" e "/". Caracteres incomuns em nomes de arquivo podem causar coisas inesperadas e frequentemente indesejaveis em seu terminal (por exemplo, alterar as configuracoes de suas teclas de funcao em alguns terminais). Caracteres incomuns sao tratados de forma diferente por varias acoes, conforme descrito abaixo. -print0, -fprint0 Sempre imprime o nome do arquivo exato, inalterado, mesmo se a saida for para um terminal. -ls, -fls Caracteres incomuns sempre tem escape. Os caracteres de espaco em branco, barra invertida e aspas duplas sao impressos usando escape no estilo C (por exemplo, `\f', `\"'). Outros caracteres incomuns sao impressos usando escape octal. Outros caracteres imprimiveis (para -ls e -fls esses sao os caracteres entre octal 041 e 0176) sao impressos no estado em que se encontram. -printf, -fprintf Se a saida nao for para um terminal, ela sera impressa no estado em que se encontra. Caso contrario, o resultado depende de qual diretiva esta em uso. As diretivas %D, %F, %g, %G, %H, %Y e %y se expandem para valores que nao estao sob controle dos donos dos arquivos e, portanto, sao impressos no estado em que se encontram. As diretivas %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u e %U tem valores que estao sob o controle dos donos dos arquivos, mas que nao podem ser usados para enviar dados arbitrarios para o terminal e, portanto, sao impressos no estado em que se encontram. As diretivas %f, %h, %l, %p e %P sao colocadas entre aspas. Esta forma de colocar entre aspas e realizada da mesma maneira que para GNU ls. Este nao e o mesmo mecanismo de uso de aspas usado para -ls e -fls. Se voce for capaz de decidir qual formato usar para a saida do find, entao normalmente e melhor usar `\0' como um terminador do que usar nova linha, ja que os nomes de arquivo podem conter espacos em branco e caracteres de nova linha. A configuracao da variavel de ambiente LC_CTYPE e usada para determinar quais caracteres precisam ser colocado entre aspas. -print, -fprint A uso de aspas e tratado da mesma maneira que para -printf e -fprintf . Se estiver usando find em um script ou em uma situacao em que os arquivos correspondentes possam ter nomes arbitrarios, voce deve considerar o uso de -print0 em vez de -print. As acoes -ok e -okdir imprimem o nome do arquivo atual no estado em que se encontra. Isso pode mudar em uma versao futura. CONFORMIDADE COM OS PADROES Para uma conformidade mais proxima do padrao POSIX, voce deve definir a variavel de ambiente POSIXLY_CORRECT. As seguintes opcoes sao especificadas no padrao POSIX (IEEE Std 1003.1-2008, 2016 Edition): -H Esta opcao e suportada. -L Esta opcao e suportada. -name Esta opcao e suportada, mas a conformidade com POSIX depende da conformidade com POSIX da funcao de biblioteca fnmatch(3) do sistema. A partir de findutils-4.2.2, os metacaracteres de shell ("*", "?" ou "[]", por exemplo) correspondem a um "." inicial, porque a interpretacao 126 do IEEE PASC requer isso. Esta e uma mudanca em relacao as versoes anteriores do findutils. -type Suportado. POSIX especifica "b", "c", "d", "l", "p", "f" e "s". GNU find tambem suporta "D", representando uma porta, onde o sistema operacional os fornece. Alem disso, GNU find permite que varios tipos sejam especificados de uma vez em uma lista separada por virgulas. -ok Suportado. A interpretacao da resposta e de acordo com os padroes "yes" e "no" selecionados pela configuracao da variavel de ambiente LC_MESSAGES. Quando a variavel de ambiente POSIXLY_CORRECT e definida, esses padroes sao considerados a definicao do sistema de uma resposta positiva (yes) ou negativa (no). Consulte a documentacao do sistema para nl_langinfo(3), em particular YESEXPR e NOEXPR. Quando POSIXLY_CORRECT nao e definido, os padroes sao retirados do proprio catalogo de mensagens de find. -newer Suportado. Se o arquivo especificado for um link simbolico, ele sempre tera a desreferencia. Esta e uma mudanca do comportamento anterior, que costumava tirar o tempo relevante do link simbolico; veja a secao HISTORICO abaixo. -perm Suportado. Se a variavel de ambiente POSIXLY_CORRECT nao for definida, alguns argumentos de modo (por exemplo, +a+x) que nao sao validos em POSIX sao suportados para compatibilidade com versoes anteriores. Outros primarios Os primarios -atime, -ctime, -depth, -exec, -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user e -xdev sao todos suportados. O padrao POSIX especifica parenteses "(", ")", negacao "!" e os operadores logicos E/OU -a e -o. Todas as outras opcoes, predicados, expressoes e assim por diante sao extensoes alem do padrao POSIX. Muitas dessas extensoes nao sao exclusivas do GNU find, entretanto. O padrao POSIX requer que o find detecte loops: O utilitario find deve detectar loops infinitos; ou seja, inserir um diretorio visitado anteriormente que e um ancestral do ultimo arquivo encontrado. Ao detectar um loop infinito, o find deve escrever uma mensagem de diagnostico para o erro padrao e deve recuperar sua posicao na hierarquia ou terminar. GNU find esta em conformidade com esses requisitos. A contagem de links de diretorios que contem entradas que sao links fisicos para um ancestral geralmente sera menor do que deveria ser. Isso pode significar que o GNU find as vezes otimiza a visita a um subdiretorio que e na verdade um link para um ancestral. Como o find nao entra em tal subdiretorio, e permitido evitar a emissao de uma mensagem de diagnostico. Embora esse comportamento possa ser um tanto confuso, e improvavel que alguem realmente dependa desse comportamento. Se a otimizacao de folha foi desativada com -noleaf, a entrada do diretorio sempre sera examinada e a mensagem de diagnostico sera emitida onde for apropriado. Links simbolicos nao podem ser usados para criar ciclos de sistema de arquivos como tal, mas se a opcao -L ou a opcao -follow estiver em uso, uma mensagem de diagnostico e emitida quando find encontra um loop de links simbolicos. Como acontece com os loops que contem links fisicos, a otimizacao de folha frequentemente significa que find sabe que nao precisa chamar stat() ou chdir() no link simbolico, portanto, esse diagnostico frequentemente nao e necessario. A opcao -d e suportada para compatibilidade com varios sistemas BSD, mas voce deve usar a opcao compativel com POSIX -depth. A variavel ambiente POSIXLY_CORRECT nao afeta o comportamento dos testes -regex ou -iregex, porque estes testes nao sao especificados no padrao POSIX. VARIAVEIS DE AMBIENTE LANG Fornece um valor padrao para as variaveis de internacionalizacao que nao estao definidas ou sao nulas. LC_ALL Se definido como um valor de string nao vazio, substitui os valores de todas as outras variaveis de internacionalizacao. LC_COLLATE O padrao POSIX especifica que esta variavel afeta a correspondencia de padroes a ser usada para a opcao -name. GNU find usa a funcao de biblioteca fnmatch(3) e, portanto, o suporte para LC_COLLATE depende da biblioteca do sistema. Essa variavel tambem afeta a interpretacao da resposta para -ok; enquanto a variavel LC_MESSAGES seleciona o padrao atual usado para interpretar a resposta para -ok, a interpretacao de quaisquer expressoes entre colchetes no padrao sera afetada por LC_COLLATE. LC_CTYPE Essa variavel afeta o tratamento das classes de caracteres usadas nas expressoes regulares e tambem com o teste -name, se a funcao da biblioteca fnmatch(3) do sistema suportar isso. Essa variavel tambem afeta a interpretacao de qualquer classe de caractere nas expressoes regulares usadas para interpretar a resposta ao prompt emitido por -ok. A variavel de ambiente LC_CTYPE tambem afetara quais caracteres sao considerados imprimiveis quando nomes de arquivos sao impressos; consulte a secao NOMES DE ARQUIVOS INCOMUNS. LC_MESSAGES Determina o local a ser usado para mensagens internacionalizadas. Se a variavel de ambiente POSIXLY_CORRECT for definida, isso tambem determina a interpretacao da resposta ao prompt feito pela acao -ok. NLSPATH Determina a localizacao dos catalogos de mensagens de internacionalizacao. PATH Afeta os diretorios que sao pesquisados para encontrar os executaveis chamados por -exec, -execdir, -ok e -okdir. POSIXLY_CORRECT Determina o tamanho do bloco usado por -ls e -fls. Se POSIXLY_CORRECT for definido, os blocos sao unidades de 512 bytes. Caso contrario, eles sao unidades de 1024 bytes. Definir essa variavel tambem desativa as mensagens de aviso (ou seja, implica -nowarn) por padrao, porque POSIX requer que, alem da saida para -ok, todas as mensagens impressas em stderr sao diagnosticos e devem resultar em um status de saida diferente de zero. Quando POSIXLY_CORRECT nao esta definido, -perm +zzz e tratado como -perm /zzz se +zzz nao for um modo simbolico valido. Quando POSIXLY_CORRECT e definido, tais construcoes sao tratadas como um erro. Quando POSIXLY_CORRECT e definido, a resposta ao prompt feito pela acao -ok e interpretada de acordo com o catalogo de mensagens do sistema, ao contrario de acordo com as traducoes de mensagens do proprio find. TZ Afeta o fuso horario usado para algumas das diretivas de formato relacionadas ao tempo de -printf and -fprintf. EXEMPLOS Abordagem simples de `find|xargs` o Encontra arquivos com o nome core no ou abaixo do diretorio /tmp e exclua-os. $ find /tmp -name core -type f -print | xargs /bin/rm -f Observe que isso nao funcionara corretamente se houver nomes de arquivo que contenham novas linhas, aspas simples ou duplas ou espacos. Abordagem mais segura `find -print0 | xargs -0` o Encontra arquivos com o nome core dentro ou sob o diretorio /tmp e apaga-os, processando os nomes dos arquivos de forma que os nomes dos arquivos ou diretorios que contenham aspas simples ou duplas, espacos ou novas linhas sejam tratados corretamente. $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f O teste -name vem antes do teste -type para evitar ter que chamar stat(2) em cada arquivo. Observe que ainda ha uma corrida entre o momento em que find atravessa a hierarquia imprimindo os nomes de arquivo correspondentes e o momento em que o processo executado por xargs funciona com aquele arquivo. Processando pontos de partida arbitrarios o Dado que outro programa, o proggy, pre-filtra e cria uma enorme lista de arquivos separados por NULO, processa-os como pontos de partida e encontra todos os arquivos normais e vazios entre eles: $ proggy | find -files0-from - -maxdepth 0 -type f -empty O uso de `-files0-from -` significa ler os nomes dos pontos iniciais de entrada padrao, ou seja, do pipe; e -maxdepth 0 garante que somente essas entradas sejam examinadas explicitamente sem recorrer a diretorios (no caso de um dos pontos iniciais ser um). Executando um comando para cada arquivo o Executa arquivo em cada arquivo no diretorio atual ou abaixo dele. $ find . -type f -exec file '{}' \; Observe que as chaves sao colocadas entre aspas simples para protege-las de interpretacao como pontuacao de script de shell. O ponto e virgula e protegido de forma semelhante pelo uso de uma barra invertida, embora as aspas simples tambem possam ter sido usadas nesse caso. Em muitos casos, pode-se preferir a sintaxe `-exec ... +` ou, melhor, `-execdir ... +` por razoes de desempenho e seguranca. Percorrendo o sistema de arquivos apenas uma vez -- para 2 acoes diferentes o Percorre o sistema de arquivos apenas uma vez, listando arquivos e diretorios ID de usuario definido em /root/suid.txt e arquivos grandes em /root/big.txt. $ find / \ \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \) Este exemplo usa o caractere de continuacao de linha '\' nas primeiras duas linhas para instruir o shell a continuar lendo o comando na proxima linha. Pesquisando arquivos por idade o Procura arquivos em seu diretorio inicial que foram modificados nas ultimas vinte e quatro horas. $ find $HOME -mtime 0 Este comando funciona assim porque o tempo decorrido desde a ultima modificacao de cada arquivo e dividido por 24 horas e o restante e descartado. Isso significa que para corresponder a -mtime 0, um arquivo tera que ter uma modificacao no passado, que e menos de 24 horas atras. Pesquisando arquivos por permissoes o Pesquisa arquivos que sao executaveis, mas nao legiveis. $ find /sbin /usr/sbin -executable \! -readable -print o Pesquisa arquivos que tenham permissao de leitura e gravacao para seu dono e grupo, mas que outros usuarios possam ler, mas nao podem escrever. $ find . -perm 664 Os arquivos que atendem a esses criterios, mas tem outros bits de permissao definidos (por exemplo, se alguem pode executar o arquivo), nao serao correspondidos. o Pesquisa arquivos que tenham permissao de leitura e escrita para seu dono e grupo e que outros usuarios possam ler, independentemente da presenca de bits de permissao extras (por exemplo, o bit executavel). $ find . -perm -664 Isso correspondera a um arquivo que possui o modo 0777, por exemplo. o Pesquisa por arquivos que podem ser escritos por alguem (seu dono, seu grupo ou qualquer outra pessoa). $ find . -perm /222 o Pesquisa os arquivos que podem ser escritos pelo dono ou pelo grupo. $ find . -perm /220 $ find . -perm /u+w,g+w $ find . -perm /u=w,g=w Todos os tres comandos fazem a mesma coisa, mas o primeiro usa a representacao octal do modo de arquivo e os outros dois usam a forma simbolica. Os arquivos nao precisam poder ser escritos tanto pelo dono quanto pelo grupo para serem combinados; qualquer um servira. o Pesquisa por arquivos que possam ser escritos tanto pelo dono quanto pelo grupo. $ find . -perm -220 $ find . -perm -g+w,u+w Ambos os comandos fazem a mesma coisa. o Uma pesquisa mais elaborada sobre permissoes. $ find . -perm -444 -perm /222 \! -perm /111 $ find . -perm -a+r -perm /a+w \! -perm /a+x Esses dois comandos procuram arquivos que sao legiveis para todos (-perm -444 ou -perm -a+r), tem pelo menos um conjunto de bits de escrita (-perm /222 ou -perm /a+w), mas nao sao executaveis para ninguem (! -perm /111 ou ! -perm /a+x, respectivamente). Remocao (prune) - omitindo arquivos e subdiretorios o Copia o conteudo de /dir-origem para /dir-dest, mas omite os arquivos e diretorios chamados .snapshot (e qualquer coisa neles). Tambem omite arquivos ou diretorios cujo nome termina em "~", mas nao seu conteudo. $ cd /dir-origem $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \ | cpio -pmd0 /dir-dest A construcao -prune -o \( ... -print0 \) e bastante comum. A ideia aqui e que a expressao antes de -prune corresponda as coisas que devem ser removidas. No entanto, a acao -prune em si retorna verdadeiro, entao o -o a seguir garante que o lado direito seja avaliado apenas para aqueles diretorios que nao foram removidos (o conteudo dos diretorios removidos nem mesmo e visitado , entao seu conteudo e irrelevante). A expressao do lado direito do -o esta entre parenteses apenas para maior clareza. Ele enfatiza que a acao -print0 ocorre apenas para coisas que nao tinham -prune aplicado a elas. Como a condicao "e" padrao entre os testes liga-se mais fortemente do que -o, este e o padrao de qualquer maneira, mas os parenteses ajudam a mostrar o que esta acontecendo. o Dado o seguinte diretorio de projetos e seus diretorios administrativos SCM associados, execute uma busca eficiente pelas raizes dos projetos: $ find repo/ \ \( -exec test -d '{}/.svn' \; \ -or -exec test -d '{}/.git' \; \ -or -exec test -d '{}/CVS' \; \ \) -print -prune Amostra da saida: repo/projeto1/CVS repo/gnu/projeto2/.svn repo/gnu/projeto3/.svn repo/gnu/projeto3/src/.svn repo/projeto4/.git Neste exemplo, -prune evita descida desnecessaria em diretorios que ja foram descobertos (por exemplo, nao pesquisamos projeto3/src porque ja encontramos projeto3/.svn), mas garante diretorios irmaos (projeto2 e projeto3) sao encontrados. Outros exemplos uteis o Pesquisa varios tipos de arquivo. $ find /tmp -type f,d,l Pesquisa arquivos, diretorios e links simbolicos no diretorio /tmp passando esses tipos como uma lista separada por virgulas (extensao GNU), que de outra forma e equivalente ao mais longo, porem mais portatil: $ find /tmp \( -type f -o -type d -o -type l \) o Pesquisa por arquivos com o nome especifico agulha e para imediatamente quando encontrarmos o primeiro. $ find / -name agulha -print -quit o Demonstra a interpretacao das diretivas de formato %f e %h da acao -printf para alguns casos extremos. Aqui esta um exemplo incluindo alguma saida. $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n' [.][.] [.][..] [][/] [][tmp] [/tmp][TRACE] [.][compile] [compile/64/tests][find] STATUS DE SAIDA find sai com status 0 se todos os arquivos forem processados com exito, maior que 0 se ocorrerem erros. Esta e uma descricao deliberadamente muito ampla, mas se o valor de retorno for diferente de zero, voce nao deve confiar na exatidao dos resultados de find. Quando ocorre algum erro, find pode parar imediatamente, sem completar todas as acoes especificadas. Por exemplo, alguns pontos de partida podem nao ter sido examinados ou algumas invocacoes de programa pendentes para -exec ... {} + ou -execdir ... {} + pode nao ter sido executado. HISTORICO Um programa find apareceu na Versao 5 do Unix como parte do projeto Programmer's Workbench e foi escrito por Dick Haight. A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 de Doug McIlroy fornece alguns detalhes adicionais; voce pode le-lo on-line em . GNU find foi originalmente escrito por Eric Decker, com melhorias de David MacKenzie, Jay Plett e Tim Wood. A ideia para find -print0 e xargs -0 veio de Dan Bernstein. COMPATIBILIDADE A partir de findutils-4.2.2, os metacaracteres shell ("*", "?" ou "[]", por exemplo) usados em padroes de nome de arquivo correspondem a um "." inicial, porque a interpretacao 126 do IEEE POSIX requer isso. A partir de findutils-4.3.3, -perm /000 agora corresponde a todos os arquivos em vez de nenhum. Marcas de data e hora com resolucao em nanossegundos foram implementados em findutils-4.3.3. A partir de findutils-4.3.11, a acao -delete define o status de saida do find para um valor diferente de zero quando falha. No entanto, find nao sera encerrado imediatamente. Anteriormente, o status de saida de find nao era afetado pela falha de -delete. Recurso Adicionado em Tambem ocorre em -files0-from 4.9.0 -newerXY 4.3.3 BSD -D 4.3.1 -O 4.3.1 -readable 4.3.0 -writable 4.3.0 -executable 4.3.0 -regextype 4.2.24 -exec ... + 4.2.12 POSIX -execdir 4.2.12 BSD -okdir 4.2.12 -samefile 4.2.11 -H 4.2.5 POSIX -L 4.2.5 POSIX -P 4.2.5 BSD -delete 4.2.3 -quit 4.2.3 -d 4.2.3 BSD -wholename 4.2.0 -iwholename 4.2.0 -ignore_readdir_race 4.2.0 -fls 4.0 -ilname 3.8 -iname 3.8 -ipath 3.8 -iregex 3.8 A sintaxe -perm +MODO foi removida em findutils-4.5.12, em favor de -perm /MODO. A sintaxe +MODO foi descontinuada desde findutils-4.2.21, que foi lancado em 2005. NAO BUGS Surpresas de precedencia de operadores O comando find . -name arquivoa -o -name arquivob -print nunca imprimira um arquivoa porque isso e equivalente a find . -name arquivoa -o \( -name arquivob -a -print \). Lembre-se de que a precedencia de -a e mais alta do que a de -o e quando nao ha operador especificado entre os testes, -a e presumido. Mensagem de erro "os caminhos devem preceder a expressao" $ find . -name *.c -print find: os caminhos devem preceder a expressao find: padrao possivelmente sem aspas apos o predicado `-name'? Isso acontece quando o shell pode expandir o padrao *.c para mais de um nome de arquivo existente no diretorio atual e passar os nomes de arquivo resultantes na linha de comando para find assim: find . -name frcode.c locate.c word_io.c -print E claro que esse comando nao vai funcionar, porque o predicado -name permite exatamente apenas um padrao como argumento. Em vez de fazer as coisas dessa maneira, voce deve colocar o padrao entre aspas ou escapar o caractere curinga, permitindo que find use o padrao com o caractere curinga durante a pesquisa de correspondencia de nome de arquivo em vez de nomes de arquivo expandidos pelo shell pai: $ find . -name '*.c' -print $ find . -name \*.c -print BUGS Existem problemas de seguranca inerentes ao comportamento que o padrao POSIX especifica para find, que, portanto, nao podem ser corrigidos. Por exemplo, a acao -exec e inerentemente insegura e -execdir deve ser usado em seu lugar. A variavel de ambiente LC_COLLATE nao tem efeito na acao -ok. RELATANDO PROBLEMAS Ajuda online do GNU findutils: Relate erros de traducao para Relate outros problemas por meio do formulario no rastreador de bugs do GNU Savannah: Topicos gerais sobre o pacote GNU findutils sao discutidos na lista de discussao bug-findutils: DIREITOS AUTORAIS Copyright (C) 1990-2024 Free Software Foundation, Inc. Licenca GPLv3+: GNU GPL versao 3 ou posterior . Este e um software livre: voce e livre para altera-lo e redistribui-lo. NAO HA QUALQUER GARANTIA, na maxima extensao permitida em lei. VEJA TAMBEM chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3) fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7) Documentacao completa Ou disponivel localmente via: info find TRADUCAO A traducao para portugues brasileiro desta pagina man foi criada por Rafael Fontenelle Esta traducao e uma documentacao livre; leia a Licenca Publica Geral GNU Versao 3 ou posterior para as condicoes de direitos autorais. Nenhuma responsabilidade e aceita. Se voce encontrar algum erro na traducao desta pagina de manual, envie um e-mail para a lista de discussao de tradutores . FIND(1)