Comando find

Comando find

O comando find procura por arquivos e diretórios no disco rígido.

E dependendo das combinações de parâmetros você pode obter o caminho completo de um arquivo ou programa.

obs:. o comando |grep  serve  como filtro, para localizar os aquivos, etc…

[caption id="" align="aligncenter" width="400"]Porcura arquivos e diretorios no hd find /usr/bin |grep firefox[/caption] [caption id="" align="aligncenter" width="400"]Exemplo do comando find find /home/sidney/Área\ de\ trabalho/curso\ linux/[/caption]

Basicamente é isso quando você quiser procurar um arquivo ou programa ou diretório é assim que se faz para mais informação man find

Manpages man find

Nome

find – procurar arquivos em uma hierarquia de diretórios

Sinopse

find [H] [-L] [P] [-D debugopts] [-Olevel] [caminho …] [expressão]

Descrição


Esta página de manual documenta a versão GNU do achado. GNU encontrar pesquisas a árvore de diretórios raiz em cada nome de arquivo fornecido pela avaliação da expressão dada da esquerda para a direita, de acordo com as regras de precedência (veja operadores de seção), até que o resultado é conhecido (o lado esquerdo é falsa por e operações, verdade para OR), altura em que encontrar se move para o próximo nome de arquivo.
Se você estiver usando find em um ambiente onde a segurança é importante (por exemplo, se você estiver usando-o para procurar diretórios que são graváveis ​​por outros usuários), você deve ler o capítulo “Segurança Considerações” da documentação findutils, que é chamado Arquivos Finding e vem com findutils. Esse documento também inclui muito mais detalhes e discussão do que esta página de manual, para que você pode achar que é uma fonte mais útil de informação.

Opções

O -H, -L e -P controlar o tratamento de links simbólicos. argumentos de linha de comando a seguir estas são tomadas para ser nomes de arquivos ou diretórios para ser examinado, até o primeiro argumento que começa com ‘-‘, ou o argumento ‘(‘ ou este argumento e quaisquer argumentos a seguir são tomadas ‘!’. ser a expressão que descreve o que deve ser procurado. Se há caminhos são dadas, o diretório atual é usado. Se nenhuma expressão é dado, o -print expressão é usada (mas você provavelmente deve considerar o uso -print0 em vez disso, de qualquer maneira).
Este manual página fala sobre “opções” dentro da lista de expressões. Estas opções controlam o comportamento do achado, mas são especificados imediatamente após o último nome do caminho. Os cinco “reais” opções -H, -L, -P, -D e -O deve aparecer antes do primeiro nome de caminho, se em tudo. Um traço duplo – também pode ser usado para sinalizar que todos os demais argumentos não são opções (embora assegurando que todos os pontos de início começar com tanto ‘./’ ou ‘/’ é geralmente mais seguro se você usar curingas na lista de pontos de início) .
-P Nunca seguir links simbólicos. Este é o comportamento padrão. Quando encontrar examina ou imprime informações de um arquivo, eo arquivo é um link simbólico, as informações utilizadas devem ser tomadas a partir das propriedades da própria ligação simbólica. -EU Siga os links simbólicos. Quando encontrar examina ou imprime informação sobre arquivos, as informações utilizadas devem ser tomadas a partir das propriedades do arquivo para o qual o link aponta, não a partir do próprio (a menos que seja um link simbólico quebrado ou encontrar é incapaz de examinar o arquivo de link para que os pontos link). O uso desta opção implica -noleaf. Se, posteriormente, utilizar a opção -P, -noleaf ainda estará em vigor. Se -L está em vigor e encontrar descobre um link simbólico para um subdiretório durante a sua busca, o subdiretório apontado pelo link simbólico será procurado.
Quando a opção -L está em vigor, o predicado do tipo será sempre o jogo contra o tipo de arquivo que um link simbólico aponta para, em vez de o próprio link (a menos que o link simbólico está quebrado). Usando -L faz com que o -lname e -ilname predicados sempre retornar falso.
-H Não siga links simbólicos, com exceção ao processar os argumentos de linha de comando. Quando encontrar examina ou imprime informações sobre os arquivos, as informações utilizadas devem ser tomadas a partir das propriedades da própria ligação simbólica. A única excepção a este comportamento é quando um arquivo especificado na linha de comando é um link simbólico, ea ligação pode ser resolvido. Para essa situação, a informação utilizada é retirado de qualquer que seja o link aponta para (isto é, o link é seguido). As informações sobre o próprio link é usado como um retorno se o arquivo apontado pelo link simbólico não pode ser examinada. Se -H está em vigor e um dos caminhos especificados na linha de comando é um link simbólico para um diretório, o conteúdo desse diretório será examinado (embora, é claro -maxdepth 0 impediria isso).
Se mais do que uma de -H, -L e -P for especificado, cada substitui os outros; o último a aparecer na linha de comando tem efeito. Uma vez que é o padrão, a opção -P deve ser considerada em vigor a menos que seja -H ou -L está especificada. GNU encontrar frequentemente Status de arquivos durante o processamento da própria linha de comando, antes de qualquer pesquisa começou. Essas opções também afetam o modo como estes argumentos são processados. Especificamente, há uma série de testes que comparam arquivos listados na linha de comando contra um arquivo que estamos considerando atualmente. Em cada caso, o arquivo especificado na linha de comando terá sido examinada e algumas de suas propriedades terão sido salvos. Se o arquivo nomeado é na verdade um link simbólico, e a opção -P está em vigor (ou se nem -H nem -L foram especificados), as informações utilizadas para a comparação será feita a partir das propriedades do link simbólico. Caso contrário, ele será retirado as propriedades do arquivo o link aponta. Se achado não pode seguir o link (por exemplo, porque não tem privilégios suficientes ou o link aponta para um arquivo inexistente) serão utilizadas as propriedades do próprio link. Quando o -H ou opções -L estão em vigor, todas as ligações simbólicas listadas como argumento do -newer será desreferenciado, eo timestamp será retirado do arquivo para o qual o link simbólico aponta. A mesma consideração aplica-se a -newerXY, -anewer e -cnewer. A opção -follow tem um efeito semelhante a -L, embora ela tem efeito no ponto em que ele aparece (isto é, se -L não é usado, mas -follow é, todos os links simbólicos que aparecem após -follow na linha de comando será dereferenced, e aqueles antes que não).

DebugOptions -D


Imprimir informações de diagnóstico; isso pode ser útil para diagnosticar problemas com isso achado não está fazendo o que você quer. A lista de opções de depuração devem ser separados por vírgulas. Compatibilidade das opções de depuração não é garantido entre os lançamentos de findutils. Para obter uma lista completa de opções de depuração válidos, consulte a saída do achado -D ajuda. opções de depuração válidos incluem
Socorro Explicar as opções de depuraçãoárvore
Mostrar a árvore de expressão em sua forma original e otimizado.

Estatísticas

Imprimir mensagens como arquivos são examinados com as chamadas do sistema stat e lstat. O programa find procura minimizar essas chamadas.

Optar

Imprime informações de diagnóstico relacionadas com a otimização da árvore de expressão; veja a opção -O.

Taxas

Imprime um resumo que indica quantas vezes cada predicado êxito ou falha.
-O nível
Possibilita a otimização da consulta. O programa find reordena testes para acelerar a execução, preservando o efeito global; ou seja, predicados com efeitos secundários não são reordenadas em relação ao outro. As optimizações efectuadas em cada nível de optimização são como se segue.
0 Equivalente ao nível de otimização 1.
1
Este é o nível de optimizaçã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 -nome e -regex) são realizadas primeiro.
2
Quaisquer ensaios para ou -xtype são realizadas após quaisquer testes baseados apenas nos nomes dos arquivos, mas antes de quaisquer testes que exigem informações do inode. Em muitas versões modernas de Unix, tipos de arquivos são retornados por readdir () e assim que estes predicados são mais rápidos para avaliar de predicados que precisam stat o arquivo em primeiro lugar.
3
A este nível de otimização, o otimizador de consulta baseado em custo total está habilitado. A fim de testes é modificado de modo que barato (ou seja rápido) testes são realizados em primeiro lugar e mais caros são realizadas depois, se necessário. Dentro de cada faixa de custo, predicados são avaliados mais cedo ou mais tarde, de acordo com se eles são propensos a ter sucesso ou não. Para -o, predicados que são propensos a ter sucesso são avaliados mais cedo, e para -a, predicados que são propensos a falhar são avaliados anteriormente.
O otimizador baseado em custo tem uma idéia fixa de como provável um determinado teste seja bem sucedido. Em alguns casos, a probabilidade tem em conta a natureza específica do teste (por exemplo, do tipo f é assumido como sendo mais probabilidade de êxito do que do tipo c). O otimizador baseado em custo está actualmente a ser avaliado. Se ele realmente não melhorar o desempenho do achado, ele será removido novamente. Por outro lado, otimizações que provam ser confiável, robusto e eficaz pode ser habilitado com menores níveis de otimização ao longo do tempo. No entanto, o comportamento padrão (ou seja, otimização nível 1) não será alterado na série versão 4.3.x. A suíte findutils teste é executado todos os testes em encontrar em cada nível de otimização e garante que o resultado é o mesmo.

Expressões


A expressão é composta de opções (que afectam a operação global, em vez de o processamento de um arquivo específico, e sempre retornam true), testes (que retornam um valor verdadeiro ou falso) e ações (que têm efeitos colaterais e retornam um verdadeiro ou valor falso), todos separados por operadores. -e é assumido que o operador é omitido.
Se a expressão não contém outros que -prune ações, -print é executado em todos os arquivos para o qual a expressão é verdadeira.

OPÇÕES


Todas as opções de sempre retornar true. 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 é analisado, enquanto os testes não fazem nada até que os arquivos são examinados. O -daystart, opções -follow e -regextype são diferentes a este respeito, e têm um efeito apenas em testes que aparecem mais tarde na linha de comando. Portanto, para maior clareza, o melhor é colocá-los no começo da expressão. Um aviso é emitido se você não fizer isso.
-d Um sinônimo para -depth, para compatibilidade com FreeBSD, NetBSD, MacOS X e OpenBSD.
-daystart
Medir vezes (por Amin, -atime, -cmin, -ctime, -mmin, e -mtime) a partir do início de hoje em vez de a partir de 24 horas. Esta opção afeta somente os testes que aparecem mais tarde na linha de comando.
-profundidade Processar o conteúdo de cada diretório antes do diretório em si. A ação -delete também implica -depth.
-Segue
Obsoleto; usar a opção -L vez. Interpreta ligações simbólicas. Implica -noleaf. A opção -follow afeta somente os testes que aparecem depois na linha de comando. A menos que a opção -H ou -L tiver sido especificado, a posição da opção -follow altera o comportamento do predicado -newer; quaisquer arquivos listados como o argumento de -newer será desreferenciado se eles são links simbólicos. A mesma consideração aplica-se a -newerXY, -anewer e -cnewer. Da mesma forma, o predicado do tipo será sempre o jogo contra o tipo de arquivo que um link simbólico aponta para, em vez de o próprio link. Usando -follow faz com que o -lname e -ilname predicados sempre retornar falso.
-ajuda ajuda
Imprimir um resumo do uso de linha de comando do achado e saída.
-ignore_readdir_race
Normalmente, encontrar emitirá uma mensagem de erro quando ele falhar stat um arquivo. Se você dá a essa opção e um arquivo é apagado entre o achado tempo lê o nome do arquivo do diretório eo tempo que tenta fazer stat o arquivo, será emitida nenhuma mensagem de erro. Isto também se aplica a arquivos ou diretórios cujos nomes são dados na linha de comando. Esta opção tem efeito no momento em que a linha de comando é lido, o que significa que você não pode procurar uma parte do sistema de arquivos com esta opção e parte dela com essa opção (se você precisar fazer isso, você vai precisar para emitir dois encontrar comandos em vez disso, uma com a opção e outra sem ele).
níveis -maxdepth
Desça na maioria dos níveis (um inteiro não negativo) níveis de diretórios abaixo os argumentos de linha de comando. -maxdepth 0 meios só se aplicam os testes e ações para os argumentos de linha de comando.
níveis -mindepth
Não aplicar quaisquer testes ou ações a níveis inferiores a níveis (um inteiro não negativo). -mindepth 1 meios processar todos os arquivos exceto os argumentos de linha de comando.
-mount Não descem diretórios em outros sistemas de arquivos. Um nome alternativo para -xdev, para compatibilidade com outras versões do achado.
-noignore_readdir_race
Desliga o efeito de -ignore_readdir_race.
-noleaf
Não otimizar ao assumir que diretórios contêm 2 menos subdiretórios do que a sua contagem de hard link. Esta opção é necessária quando se procura sistemas de arquivos que não seguem a convenção diretório-link Unix, tais como CD-ROM ou sistemas de arquivos do MS-DOS ou volume AFS pontos de montagem. Cada diretório em um sistema de arquivos normal, Unix tem pelo menos 2 links de disco rígido: o seu nome ea sua ‘.’ entrada. Além disso, seus subdiretórios (se houver) cada um tem uma entrada ‘..’ ligada a esse diretório. Quando find está examinando um diretório, depois de ter statted 2 menos subdiretórios do que a contagem link do diretório, ele sabe que o resto das entradas no diretório são não-diretórios (arquivos ‘Folha’ na árvore de diretórios). Se os nomes somente dos arquivos precisam ser examinados, não há necessidade stat-los; isto dá um aumento significativo na velocidade da pesquisa.
tipo -regextype
Altera a sintaxe de expressão regular entendido por testes -regex e -iregex que ocorrem mais tarde na linha de comando. tipos atualmente implementados são emacs (este é o padrão), POSIX awk, posix-básico, posix-egrep e POSIX estendido.
-version, –version
Imprimir o número da versão descoberta e sair.
-warn, -nowarn
Vire mensagens de aviso ligado ou desligado. Estes avisos aplicam-se apenas ao uso de linha de comando, e não a quaisquer condições que encontram pode encontrar quando procura diretórios. O comportamento padrão corresponde a -warn se a entrada padrão é um tty, e -nowarn contrário.
-xautofs
Não descem diretórios em autofs sistemas de arquivos.
-xdev Não descem diretórios em outros sistemas de arquivos.

TESTES


Alguns testes, por exemplo -newerXY e -samefile, permitir a comparação entre o ficheiro actualmente a ser analisada e algum arquivo de referência especificado na linha de comando. Quando são utilizados estes testes, a interpretação do arquivo de referência é determinada pela -H opções, -L e -P e qualquer -follow anterior, mas o arquivo de referência só é examinado uma vez, no momento em que a linha de comando é analisado. Se o arquivo de referência não pode ser examinado (por exemplo, a estatística chamada de sistema (2) falha para ele), uma mensagem de erro é emitida, e encontrar saídas com um status diferente de zero. argumentos numéricos podem ser especificados como
+ n para n maior do que, -n para menos do que n, n para exatamente n.
Amin n Arquivo foi acessado pela última vez há n minutos.
arquivo -anewer
O arquivo foi acessado pela última vez mais recentemente do arquivo foi modificado. Se o arquivo é um link simbólico e a opção -H ou a opção -L está em vigor, o tempo de acesso do arquivo aponta para sempre é usado.
-atime n
Arquivo foi acessado pela última n * 24 horas atrás. Quando descoberta descobre como muitos períodos de 24 horas atrás, o arquivo foi acessado pela última vez, qualquer parte fracionária é ignorado, então para combinar -atime +1, um arquivo tem que ter sido acessada pelo menos dois dias atrás.
-cmin n
O status do arquivo foi modificado pela última vez há n minutos.
arquivo -cnewer
O status do arquivo foi modificado pela última vez mais recentemente do arquivo foi modificado. Se o arquivo é um link simbólico e a opção -H ou a opção -L está em vigor, o tempo de status em mudança do arquivo aponta para sempre é usado.
-ctime n
O status do arquivo foi modificado pela última vez n * 24 horas atrás. Veja os comentários para -atime para entender como arredondamento afeta a interpretação de vezes mudança de status do arquivo.
-vazio Arquivo está vazio e é um arquivo regular ou um diretório.
-executável
Jogos arquivos que são executáveis ​​e diretórios que são pesquisáveis ​​(em uma resolução sentido nome do arquivo). Isso leva em conta listas de controle de acesso e outras permissões artefactos que o teste -perm ignora. Este teste faz uso do acesso à chamada de sistema (2), e assim pode ser enganado por servidores NFS que fazem mapeamento UID (ou raiz-esmagamento), uma vez que muitos sistemas de implementar o acesso (2) no núcleo do cliente e, portanto, não pode fazer uso de as informações de mapeamento UID realizada no servidor. Porque este teste é baseado apenas no resultado do acesso à chamada de sistema (2), não há nenhuma garantia de que um arquivo para o qual este teste for bem-sucedido pode realmente ser executado.
-falso Sempre falsa.
tipo -fstype
Arquivo estiver em um sistema de arquivos do tipo tipo. Os tipos de sistemas de arquivos válidos variam entre as diferentes versões do Unix; uma lista incompleta de tipos de sistemas de arquivos que são aceitos em alguma versão do Unix ou de outra é: ufs, 4.2, 4.3, NFS, PGT, a MFS, S51K, S52K. Você pode usar -printf com a directiva% F para ver os tipos de seu sistema de arquivos.
-gid n Grupo numérico do arquivo de identificação é n.
-group gname
Arquivo pertence gname grupo (grupo numérico ID permitido).
-ilname padrão
Como -lname, mas o jogo é diferencia maiúsculas de minúsculas. Se a opção -L ou a opção -follow está em vigor, este teste retorna falso a menos que o link simbólico está quebrado.
-iname padrão
Como -nome, mas o jogo é diferencia maiúsculas de minúsculas. Por exemplo, os padrões ‘fo * “e” F ??’ coincidir com os nomes de arquivo ‘Foo’, ‘FOO’, ‘foo’, ‘foo’, etc. Nestes padrões, ao contrário de expansão filename pelo shell, uma inicial ‘.’ pode ser igualada por ‘*’. Ou seja, encontrar -name * bar irá coincidir com o arquivo ‘.foobar’. Por favor, note que você deve citar padrões como uma questão de curso, caso contrário, o shell irá expandir quaisquer caracteres curinga neles.
-inum n
Arquivo tem o número inode n. Ele normalmente é mais fácil usar o teste -samefile vez.
-ipath padrão
Comporta-se da mesma maneira como -iwholename. Esta opção está obsoleta, por isso, não usá-lo.
-iregex padrão
Como -regex, mas o jogo é diferencia maiúsculas de minúsculas.
-iwholename padrão
Como -wholename, mas o jogo é diferencia maiúsculas de minúsculas.
-links n
Arquivo tem n ligações.
-lname padrão
Arquivo é um link simbólico cujo conteúdo corresponde ao padrão padrão shell. Os metacaracteres não tratam ‘/’ ou ”. especialmente. Se a opção -L ou a opção -follow está em vigor, este teste retorna falso a menos que o link simbólico está quebrado.
-mmin n
Os dados de arquivo foi modificada pela última vez há n minutos.
-mtime n
Os dados de arquivo foi modificada pela última vez n * 24 horas atrás. Veja os comentários para -atime para entender como arredondamento afeta a interpretação dos horários de modificação do arquivo.
-name padrão
Base de dados de nome de arquivo (o caminho com os diretórios principais removidos) coincide com modelo padrão shell. Os metacaracteres ( ‘*’, ‘?’, E ‘[]’) jogo um ‘.’ no início do nome de base (isto é uma alteração na findutils-4.2.2; ver secção NORMAS CONFORMIDADE abaixo). Para ignorar um diretório e os arquivos sob ele, use -prune; ver um exemplo na descrição do -caminho. Chaves não são reconhecidos como sendo especial, apesar do fato de que algumas conchas incluindo Bash imbuir chaves com um significado especial nos padrões de fachada. O nome correspondente é realizada com a utilização do fnmatch (3) A função de biblioteca. Não se esqueça de colocar o padrão entre aspas, a fim de protegê-lo de expansão pelo shell.
arquivo -newer
O arquivo foi modificado mais recentemente do arquivo. Se o arquivo é um link simbólico e a opção -H ou a opção -L está em vigor, o tempo de modificação do arquivo aponta para sempre é usado.
referência -newerXY
Compara o timestamp do arquivo atual com referência. O argumento de referência é normalmente o nome de um ficheiro (e uma das suas marcas de tempo é utilizado para a comparação), mas também pode ser uma cadeia de caracteres descrevendo um tempo absoluto. X e Y são espaços reservados para outras letras, e estas letras seleccionar qual pertence a forma como é utilizado para a comparação de referência.
Algumas combinações são inválidas; por exemplo, é inválida para X ser t. Algumas combinações não estão implementados em todos os sistemas; por exemplo B não é suportado em todos os sistemas. Se uma combinação não suportada ou inválida de XY for especificado, um erro fatal resultará. Especificações de tempo são interpretados como para o argumento para a opção -d de data GNU. Se você tentar usar o tempo do nascimento de um arquivo de referência, eo tempo de nascimento não pode ser determinado, resulta de uma mensagem de erro fatal. Se você especificar um teste que se refere ao tempo do nascimento de arquivos que estão sendo examinados, este teste irá falhar para todos os ficheiros onde o tempo de nascimento é desconhecida.
-nogroup
Nenhum grupo corresponde ao número de identificação de grupo do arquivo.
-nouser
Nenhum usuário corresponde ao ID de usuário numérico do arquivo.
-path padrão
O nome do arquivo coincide com modelo padrão shell. Os metacaracteres não tratam ‘/’ ou ”. especialmente; Assim, por exemplo,
encontrar . -path “./sr*sc”
imprimirá uma entrada para um diretório chamado ‘./src/misc’ (se existir). Para ignorar uma árvore de diretórios inteira, use -prune ao invés de verificar todos os arquivos na árvore. Por exemplo, para ignorar o diretório ‘src / emacs’ e todos os arquivos e diretórios sob ela, e imprimir os nomes dos outros arquivos encontrados, fazer algo parecido com isto:
encontrar . -caminho ./src/emacs -prune -o -print
Note-se que o teste padrão de jogo se aplica a todo o nome do arquivo, a partir de um dos pontos de início nomeadas na linha de comando. Só faria sentido usar um nome de caminho absoluto aqui se o ponto de partida relevante é também um caminho absoluto. Isto significa que este comando não irá corresponder a qualquer coisa:
encontrar bar -caminho / foo / bar / myfile -print
O -caminho predicado também é suportado pelo HP-UX encontrar e estará em uma próxima versão do padrão POSIX.
modo -perm
Bits de permissão do arquivo são exatamente modo (octal ou simbólico). Desde uma correspondência exata é necessária, se você quiser utilizar este formulário para os modos simbólicos, você pode ter que especificar uma cadeia de modo bastante complexo. Por exemplo -perm g = w só irá coincidir com arquivos que têm modo de 0020 (isto é, aqueles em que grupo permissão de escrita é o único conjunto de permissões). É mais provável que você vai querer usar os ‘/’ ou – formas, por exemplo -perm -g = w, o que corresponde a qualquer arquivo com permissão de grupo write ”. Consulte a seção exemplos para alguns exemplos ilustrativos.
-perm – Modo
Todo o modo de bits de permissão são definidos para o arquivo. modos simbólicos são aceitos nesta forma, e isso geralmente é a maneira pela qual gostaria de usá-los. Você deve especificar ‘u’, ‘g’ ou ‘o’ se você usar um modo simbólico. Consulte a seção exemplos para alguns exemplos ilustrativos.
-perm / mode
Qualquer do modo de bits de permissão são definidos para o arquivo. modos simbólicos são aceitos nesta forma. Você deve especificar ‘u’, ‘g’ ou ‘o’ se você usar um modo simbólico. Consulte a seção exemplos para alguns exemplos ilustrativos. Se há bits de permissão no modo estão definidos, este teste corresponde a qualquer arquivo (a idéia aqui é para ser coerente com o comportamento de -perm -000).
-perm + modo de
Obsoleta, antiga forma de pesquisa de arquivos com qualquer um dos bits de permissão em conjunto de modo. Você deve usar -perm / mode em seu lugar. Tentando usar a sintaxe ‘+’, com modos simbólicos irá produzir resultados surpreendentes. Por exemplo, ‘+ L + X’ é um modo simbólico válido (equivalente a + L, + x, ou seja, 0111) e, portanto, não vai ser avaliada como + -perm modo mas em vez disso, como o modo de especificador -perm modo exacto e por isso corresponde a arquivos com permissões exatas 0111 em vez de arquivos com qualquer executar conjunto de bits. Se você encontrou este ponto confuso, você não está sozinho – basta usar -perm / mode. Esta forma de o teste -perm está obsoleta porque a especificação POSIX requer a interpretação de um líder ‘+’ como sendo parte de um modo simbólico, e por isso passou a usar ‘/’ em vez disso.
-legível
Jogos arquivos que são legíveis. Isso leva em conta listas de controle de acesso e outras permissões artefactos que o teste -perm ignora. Este teste faz uso do acesso à chamada de sistema (2), e assim pode ser enganado por servidores NFS que fazem mapeamento UID (ou raiz-esmagamento), uma vez que muitos sistemas de implementar o acesso (2) no núcleo do cliente e, portanto, não pode fazer uso de as informações de mapeamento UID realizada no servidor.
-regex padrão
O nome do arquivo corresponde padrão de expressão regular. Este é um jogo em todo o caminho, não uma busca. 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 ‘. As expressões regulares compreendidos por find são, por padrão Emacs expressões regulares, mas isso pode ser alterado com a opção -regextype.
nome -samefile
Arquivo refere ao mesmo inode como nome. Quando -L está em vigor, o que pode incluir links simbólicos.
-size N [cwbkMG]
Arquivo usa n unidades de espaço. Os sufixos seguintes podem ser usados:
‘B’ para blocos de 512 bytes (este é o padrão se nenhum sufixo é usado)
‘C’
para bytes
‘W’
para as palavras de dois bytes
‘K’
para kilobytes (unidades de 1024 bytes)
‘M’
para Megabytes (unidades de 1048576 bytes)
‘G’
para Gigabytes (unidades de 1073741824 bytes)
O tamanho não conta blocos indiretos, mas não conta blocos em arquivos esparsos que não são realmente alocados. Tenha em mente que a ‘% k’ e ‘% b’ especificadores de formato de -printf lidar com arquivos esparsos de forma diferente. O sufixo “b” sempre denota blocos de 512 bytes e nunca blocos de 1 Kilobyte, que é diferente para o comportamento de -ls.
-verdade Sempre verdade.
do tipo c
Arquivo é do tipo c:
b bloco (buffer) especial c caracteres (sem buffer) especial d diretório p pipe nomeado (FIFO) f arquivo regular eu link simbólico; isso nunca é verdade se a opção -L ou a opção -follow está em vigor, a menos que o link simbólico está quebrado. Se você quiser procurar por links simbólicos quando -L está em vigor, use -xtype. s soquete D porta (Solaris) -uid n ID de usuário numérico do arquivo é n.
-usados ​​n
Arquivo foi acessado pela última n dias após o seu estatuto foi alterado pela última vez.
uname -user
Arquivo é de propriedade de uname de usuário (ID de usuário numérico permitido).
-wholename padrão
Veja -caminho. Esta alternativa é menos portátil do que -caminho.
-writable
Jogos arquivos que são graváveis. Isso leva em conta listas de controle de acesso e outras permissões artefactos que o teste -perm ignora. Este teste faz uso do acesso à chamada de sistema (2), e assim pode ser enganado por servidores NFS que fazem mapeamento UID (ou raiz-esmagamento), uma vez que muitos sistemas de implementar o acesso (2) no núcleo do cliente e, portanto, não pode fazer uso de as informações de mapeamento UID realizada no servidor.
-xtype c
O mesmo que -tipo menos que o arquivo é um link simbólico. Para links simbólicos: se o -H ou opção -P foi especificado, verdadeiro se o arquivo é um link para um arquivo do tipo C; se a opção -L foi dado, verdadeiro se c é ‘l’. Em outras palavras, para links simbólicos, -xtype verifica o tipo de arquivo que -tipo não verifica.
-context padrão
(Somente SELinux) Contexto de segurança do arquivo corresponde padrão glob.

AÇÕES


-excluir
Deletar arquivos; true se a remoção bem-sucedida. Se a remoção não, uma mensagem de erro é emitido. Se -delete falhar, encontrar ‘s status de saída será diferente de zero (quando finalmente sai). Uso de -delete liga-se automaticamente a opção -depth. Advertências: Não se esqueça de que a linha de comando find é avaliada como uma expressão, assim, colocar -delete primeira fará encontrar tentar eliminar tudo abaixo os pontos de partida especificados. Ao testar uma linha de comando achar que você mais tarde pretende utilizar com -delete, você deve especificar explicitamente aprofundada, a fim de evitar surpresas posteriores. Porque -delete implica -depth, você não pode utilmente usar -prune e -delete juntos.
comando -exec;
Executa um comando; true se 0 estado é retornado. Todos os seguintes argumentos de encontrar são tidas como argumentos para o comando até que um argumento que consiste em ‘;’ é encontrado. A string ‘{}’ é substituído pelo nome do arquivo que está sendo processado em todos os lugares que ocorre nos argumentos para o comando, não apenas em argumentos em que está sozinho, como em algumas versões do achado. Ambas estas construções podem precisar ser escapado (com um ‘\’) ou cotados para protegê-los da expansão pelo shell. Ver a secção de Exemplos para os exemplos da utilização da opção -exec. O comando especificado é executado uma vez para cada arquivo combinado. O comando é executado no diretório de partida. Existem problemas de segurança inevitáveis ​​que cercam o uso da ação -exec; você deve usar a opção -execdir vez.
comando -exec {} +
Esta variante da acção -exec executa o comando especificado nos arquivos selecionados, mas a linha de comando é construída, anexando o nome de cada arquivo selecionado no final; o número total de chamadas para execução do comando irá ser muito menor do que o número de ficheiros correspondentes. A linha de comando é construído da mesma forma que xargs constrói as suas linhas de comando. Apenas uma instância de ‘{}’ é permitido dentro do comando. O comando é executado no diretório de partida.
comando -execdir;
-execdir comando {} +
Como -exec, mas o comando especificado é executado a partir do subdiretório que contém o arquivo combinado, o que não é normalmente o diretório em que você começou a encontrar. Este método muito mais seguro para chamar comandos, uma vez que evita condições de corrida durante a resolução dos caminhos para os arquivos  correspondentes. Tal como acontece com a ação -exec, a forma de ‘+’ da -execdir vai construir uma linha de comando para processar mais de um arquivo combinado, mas qualquer invocação de comando só irá listar os arquivos que existem no mesmo subdiretório. Se você usar esta opção, você deve garantir que a sua variável de ambiente $ PATH não faz referência ‘.’; caso contrário, um atacante pode executar os comandos que eles gostam, deixando um arquivo apropriadamente nomeado em um diretório em que você vai correr -execdir. O mesmo se aplica a ter entradas no $ PATH que estão vazios ou que não são nomes de diretório absolutos.
arquivo -fls
Verdade; como -ls mas gravar no arquivo como -fprint. O arquivo de saída é sempre criada, mesmo que o predicado não é correspondido. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
arquivo -fprint
Verdade; imprimir o nome completo do arquivo em arquivo de arquivo. Se o arquivo não existir quando descoberta é executado, ele será criado; se ele existir, ele será truncado. Os nomes de arquivos ” / dev / stdout ” e ” / dev / stderr ” são tratados de forma especial; eles se referem à saída padrão e saída de erro padrão, respectivamente. O arquivo de saída é sempre criada, mesmo que o predicado não é correspondido. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
arquivo -fprint0
Verdade; como -print0 mas gravar no arquivo como -fprint. O arquivo de saída é sempre criada, mesmo que o predicado não é correspondido. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
formato de arquivo -fprintf
Verdade; como -printf mas gravar no arquivo como -fprint. O arquivo de saída é sempre criada, mesmo que o predicado não é correspondido. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
-ls Verdade; Lista de arquivo atual no formato ls -dils na saída padrão. As contagens de blocos são blocos de 1K, a menos que a variável POSIXLY_CORRECT ambiente é definida, caso em que os blocos de 512 bytes são utilizados. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
comando -ok;
Como -exec mas pedir o usuário em primeiro lugar. Se o usuário concorda, execute o comando. Caso contrário, basta retornar falso. Se o comando é executado, sua entrada padrão é redirecionado a partir de / dev / null.
A resposta à solicitação é comparado com um par de expressões regulares para determinar se ele é uma resposta afirmativa ou negativa. Esta expressão regular é obtido a partir do sistema se o ‘POSIXLY_CORRECT’ variável de ambiente estiver definida, ou de outra forma a partir de traduções de mensagens de encontrar. Se o sistema não tem uma definição adequada, encontrar a própria definição será usado. Em ambos os casos, a interpretação da própria expressão regular será afetado 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 pedir o usuário em primeiro lugar na mesma forma que para -ok. Se o usuário não concordar, basta retornar falso. Se o comando é executado, sua entrada padrão é redirecionado a partir de / dev / null.
-impressão Verdade; imprimir o nome completo do arquivo na saída padrão, seguido por uma nova linha. Se você está canalizando a saída de encontrar em outro programa e existe a possibilidade menor que os arquivos que você está procurando pode conter uma nova linha, então você deve considerar seriamente usando a opção -print0 vez de -print. Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
-print0
Verdade; imprimir o nome completo do arquivo na saída padrão, seguido de um caractere nulo (em vez do caractere de nova linha que -print usos). Isso permite que os nomes de arquivos que contenham novas linhas ou outros tipos de espaço em branco para ser corretamente interpretados por programas que processam a saída achado. Esta opção corresponde à opção -0 de xargs.
formato -printf
Verdade; formato de impressão na saída padrão, interpretando ‘\’ fugas e directivas ‘%’. Larguras de campo e precisões pode ser especificado como com a função ‘printf’ C. Por favor note que muitos dos campos são impressos como% s em vez de% d, e isso pode significar que as bandeiras não funcionam como seria de esperar. Isto também significa que o ‘-‘ flag funciona (ele força campos para ser alinhado à esquerda). Ao contrário -print, -printf não adicionar uma nova linha no final da cadeia. Os escapes e diretrizes são:
\uma Alarme.
\ b
Backspace.
\ c
Parar de imprimir a partir deste formato imediatamente e lave a saída.
\ f
O avanço de página.
\ n
Nova linha.
\ r
retorno de carro.
\ t
guia horizontal.
\ v
guia vertical.
\ 0
ASCII NUL.
\\
Uma barra invertida literal ( ‘\’).
\ NNN
O personagem cujo código ASCII é NNN (octal).
Um personagem ‘\’ seguido por qualquer outro caractere é tratado como um caractere ordinário, de modo que ambos são impressos.
%% Um sinal de porcentagem literal.
%uma
tempo de acesso último arquivo no formato retornado pela função C ‘ctime’.
% A k
Tempo de acesso último arquivo no formato especificado em k, o que é ou função ‘@’ ou uma directiva para ‘strftime’ do C. Os valores possíveis para K são listados a seguir;  alguns deles podem não estar disponíveis em todos os sistemas, devido a diferenças na ‘strftime’ entre sistemas.
@
segundos desde 1 de janeiro de 1970, 00:00 GMT, com parte fracionária.
Os campos de hora:
H
hora (00..23)
Eu
hora (01..12)
k
hora (0..23)
eu
hora (1..12)
M
minuto (00..59)
p
AM do local ou PM
r
tempo, 12 horas (hh: mm: ss [AP] M)
S
Em segundo lugar (00.00 .. 61.00). Há uma parte fracionária.
T
tempo, 24 horas (hh: mm: ss)
+
Data e hora, separados por ‘+’, por exemplo “2004-04-28 + 22: 22: 05.0 ‘. Esta é uma extensão GNU. O tempo é dado no fuso horário atual (que pode ser afetado, definindo a variável de ambiente TZ). O campo de segundos inclui uma parte fracionária.
X
representação de tempo da localidade (H: M: S)
Z
fuso horário (por exemplo, EDT), ou nada se nenhum fuso horário é determinável
Os campos de data:
uma dia da semana abreviado da localidade (Sun..Sat)
UMA
dia da semana completo do locale, comprimento variável (Sunday..Saturday)
b
nome abreviado do mês da localidade (Jan..Dec)
B
nome do mês completo de locale, comprimento variável (January..December)
c
data e hora da localidade (Sat 04 de novembro 00:02:33 EST 1989). O formato é o mesmo que para ctime (3) e de modo a preservar a compatibilidade com esse formato, não há nenhuma parte fraccionada no campo segundos.
d
dia do mês (01..31)
D
data (mm / dd / aa)
h
mesmo que b
j
dia do ano (001..366)
m
mês (01..12)
você
número da semana do ano com o domingo como primeiro dia da semana (00..53)
W
dia da semana (0..6)
W
número da semana do ano com segunda-feira como primeiro dia da semana (00..53)
X
representação da data da localidade (mm / dd / aa)
y
dois últimos dígitos do ano (00..99)
Y
ano (1970 …)
b%
A quantidade de espaço em disco usado para este arquivo em
blocos de 512 bytes. Desde que o espaço em disco é alocada em múltiplos do tamanho do bloco de sistema de arquivos geralmente é maior do que% s / 512, mas também pode ser menor se o arquivo é um arquivo esparso.
% C tempo de mudança de status último arquivo no formato retornado pela função C ‘ctime’.
% C k
Último tempo do ficheiro de estado alteração no formato especificado por k, que é o mesmo que para% A.
% d
profundidade de arquivo na árvore de diretórios; 0 significa que o arquivo é um argumento de linha de comando.
% D
O número do dispositivo no qual o arquivo existe (o campo st_dev de estatísticas struct), em decimal.
% f
O nome de arquivo com qualquer principais diretórios removidos (apenas o último elemento).
% F
Tipo de sistema de arquivos do arquivo está ligado; este valor pode ser usado para -fstype.
% g
nome do grupo de arquivo ou ID de grupo numérico se o grupo não tem nome.
% G
grupo numérico do arquivo de ID.
% h
Principais diretórios do nome de arquivo (todos, mas o último elemento). Se o nome do arquivo não contém barras (uma vez que é no diretório atual), o% h especificador expande-se para “.”.
% H
argumento de linha de comando sob a qual arquivo foi encontrado.
%Eu
número do inode do arquivo (em decimal).
% k
A quantidade de espaço em disco usado para este arquivo em 1K blocos. Desde que o espaço em disco é alocada em múltiplos do tamanho do bloco de sistema de arquivos geralmente é maior do que% s / 1024, mas também pode ser menor se o arquivo é um arquivo esparso.
%eu
Objeto da ligação simbólica (string vazia se o arquivo não é um link simbólico).
% m
bits de permissão do arquivo (em octal). Esta opção usa os números “tradicionais” que a maioria das implementações Unix usam, mas se a sua implementação em particular usa uma ordenação incomum de permissões octais pedaços, você vai ver uma diferença entre o valor real do modo do arquivo e a saída do% m. Normalmente, você vai querer ter um zero à esquerda sobre este número, e para fazer isso, você deve usar o sinalizador # (como, por exemplo, ‘% # m’).
% H
Permissões de arquivo (em forma simbólica, como por ls). Esta directiva é suportado no findutils 4.2.5 e posteriores.
% N
Número de ligações diretas para o arquivo.
% p
O nome de arquivo.
% P
O nome de arquivo com o nome do argumento de linha de comando sob a qual foi encontrada removido.
% s
o tamanho do arquivo em bytes.
% S
sparseness do arquivo. É calculado como (BLOCKSIZE * st_blocks / st_size). O valor exato que você terá para um arquivo comum de um determinado comprimento é dependente do sistema. No entanto, normalmente ficheiros dispersos terão valores inferiores a 1,0, e ficheiros que utilizam blocos indirectos podem ter um valor que é maior do que 1,0. O valor usado para BLOCKSIZE é dependente do sistema, mas é geralmente de 512 bytes. Se o tamanho do arquivo é zero, o valor impresso é indefinido. Em sistemas que não possuem suporte para st_blocks, escassez de um arquivo é assumido como sendo 1,0.
% t
o tempo da última modificação do arquivo no formato retornado pela função C ‘ctime’.
% T K
Tempo da última modificação do ficheiro no formato especificado por k, que é o mesmo que para% A.
%você
nome do usuário do arquivo ou ID de usuário numérico se o usuário não tem nome.
%VOCÊ
ID de usuário numérico do arquivo.
% y
Tipo de Arquivo (como em ls -l), U = desconhecido tipo (não deveria acontecer)
% Y
Tipo de arquivo (como% y), além de seguir os links: L = loop, N = inexistente
% Z
(Somente SELinux) contexto de segurança do arquivo.
Um caractere ‘%’ seguido por qualquer outro caractere é descartado, mas o outro personagem é impresso (não contar com este, como outros caracteres de formato pode ser introduzido). Um ‘%’ no final do argumento formato provoca um comportamento indefinido, uma vez não há nenhuma caracteres seguinte. Em algumas localidades, pode esconder suas chaves da porta, enquanto em outros, pode remover a última página do romance que você está lendo. As directivas% m% d e apoiar o #, 0 e + bandeiras, mas as outras directivas não fazer, mesmo se eles imprimem números. Directivas numéricos que não suportam estas bandeiras incluem G, L, b, D, K e n. O ‘-‘ flag formato é suportado e muda o alinhamento de um campo de justificado direita (que é o padrão) para justificado à esquerda.
Consulte a seção FILENAMES incomum para obter informações sobre como personagens incomuns em nomes de arquivos são manipulados.
-ameixa seca Verdade; Se o arquivo for um diretório, não descem para ele. Se -depth é dado, false; nenhum efeito. Porque -delete implica -depth, você não pode utilmente usar -prune e -delete juntos. -sair Sair imediatamente. Nenhum processo filho será deixado em execução, mas não há mais caminhos especificados na linha de comando será processado. Por exemplo, encontrar / tmp / foo / tmp / bar -print -sair irá imprimir somente / tmp / foo.  Quaisquer linhas de comando que foram construídos com -execdir … {} + será invocado antes de encontrar saídas. O status de saída pode ou não pode ser zero, dependendo se um erro já ocorreu.

UNUSUAL FILENAMES


Muitas das ações de resultado achado na impressão dos dados que está sob o controle de outros usuários. Isto inclui nomes de arquivos, tamanhos horas de modificação e assim por diante. Os nomes dos arquivos são um problema em potencial, uma vez que podem conter qualquer caractere exceto ‘\ 0’ e ‘/’. caracteres incomuns em nomes de arquivo pode fazer coisas inesperadas e muitas vezes indesejáveis ​​para o seu terminal (por exemplo, alterar as configurações de suas teclas de função em alguns terminais). caracteres incomuns são tratados de forma diferente por várias ações, como descrito abaixo.
-print0, -fprint0
Sempre imprima o nome do arquivo exato, sem alterações, mesmo que a saída é ir a um terminal.
-ls, -fls
caracteres incomuns são sempre escapou. O espaço em branco, barra invertida e aspas duplas caracteres são impressos usando escapar C-estilo (por exemplo, ‘\ f’, ‘\ “‘). Outros personagens incomuns são impressos utilizando um escape octal. Outros caracteres imprimíveis (por -ls e -fls estes são os caracteres entre octal 041 e 0176) são impressas como está.
-printf, -fprintf
Se a saída não está indo para um terminal, ele é impresso como está. Caso contrário, o resultado depende de qual directiva está em uso. O directivas% D,% F,% g,% G,% H,% Y e% y expandir-se para valores que não estão sob o controle de proprietários dos ficheiros, e assim são impressos como está. As directivas% A,% B% C,% d,% i,% k,% m,% M,% n,% s,% t,% u e% U têm valores que estão sob o controle de arquivos ‘ proprietários, mas que não podem ser usadas para enviar dados arbitrários para o terminal, e por isso estes são impressos como são. As directivas% f,% H,% L,% P e P% são citados. Esta citação é realizada da mesma forma que para ls GNU. Este não é o mesmo mecanismo que cita que o utilizado para -ls e -fls. Se você é capaz de decidir qual o formato a ser usado para a saída de encontrar, então é normalmente melhor usar ‘\ 0’ como um terminador do que usar nova linha, como nomes de arquivo pode conter espaços em branco e caracteres de nova linha. A configuração do ‘LC_CTYPE’ variável de ambiente é utilizada para determinar quais caracteres precisam ser citado.
-print, -fprint
Citando é tratado da mesma forma que para -printf e -fprintf. Se você estiver usando find em um script ou em uma situação em que os arquivos combinados podem ter nomes arbitrários, você deve considerar o uso -print0 vez de -print.
As ações -OK e -okdir imprimir o nome do arquivo atual como está. Isso pode mudar em uma versão futura.


OPERADORES


Listados em ordem decrescente de precedência:
(Expr)
Forçar a precedência. Desde parênteses são especiais para o shell, você normalmente terá de citá-los. Muitos dos exemplos neste manual barras invertidas página usa para este fim: ‘\ (… \)’ em vez de ‘(…)’.
! expr True se expr é falsa. Este personagem também irá normalmente precisam de proteção contra interpretação pelo shell.
-não expr
Mesmo que! Expr, mas não compatível com POSIX.
expr1 expr2
Duas expressões em uma fileira são tomadas para se juntar com uma implícita “e”; expr2 não é avaliada se expr1 é falsa.
expr1 expr2 -a
Mesmo que expr2 expr1.
expr1 expr2 -e
Mesmo que expr2 expr1, mas não compatível com POSIX.
expr1 -o expr2
Ou; expr2 não é avaliada se expr1 é verdade.
expr1 expr2 -ou
Mesmo que expr1 -o expr2, mas não compatível com POSIX.
expr1, expr2
Lista; ambos expr1 e expr2 são sempre avaliados. O valor da expr1 é descartado; o valor da lista é o valor da expr2. O operador vírgula podem ser úteis para a busca de vários tipos diferentes de coisa, mas atravessando a hierarquia de arquivos apenas uma vez. A ação -fprintf pode ser usado para listar os vários itens correspondentes em vários arquivos de saída diferentes.
Standards Conformance
Para mais próximo de conformidade com o padrão POSIX, você deve definir a variável de ambiente POSIXLY_CORRECT. As seguintes opções são especificadas no padrão POSIX (IEEE Std 1003.1, 2003 Edition):
-H Esta opção é suportada. -EU Esta opção é suportada. -nome Esta opção é suportada, mas POSIX conformidade depende da conformidade POSIX do sistema fnmatch (3) função de biblioteca. A partir de findutils-4.2.2, metacaracteres de shell ( ‘*’, ‘?’ Ou ‘[]’, por exemplo) irá corresponder a uma das principais ‘.’, Porque IEEE PASC interpretação 126 exige isso. Esta é uma alteração de versões anteriores do findutils. -digitar Suportado. POSIX especifica ‘b’, ‘c’, ‘d’, ‘l’, ‘p’, ‘f’ e ‘s’. GNU encontrar também suporta ‘D’, representando uma porta, onde o sistema operacional fornece estes. -Está bem Suportado. Interpretação da resposta é de acordo com o “sim” e “não” padrões selecionados, definindo a variável de ambiente ‘LC_MESSAGES’. Quando o ‘POSIXLY_CORRECT’ variável de ambiente estiver definida, esses padrões são levados a definição de sistema de uma resposta positiva (sim) ou negativo (não). Consulte a documentação do sistema de nl_langinfo (3), em particular YESEXPR e NOEXPR. Quando ‘POSIXLY_CORRECT’ não está definido, os padrões são, em vez retirado do próprio catálogo mensagem ‘s achado. -newer Suportado. Se o arquivo especificado for um link simbólico, é sempre dereferenced. Esta é uma mudança de comportamento anterior, que costumava tomar o tempo relevante do link simbólico; consulte a seção HISTÓRIA abaixo. -perm Suportado. Se a variável de ambiente POSIXLY_CORRECT não está definido, alguns argumentos de modo (por exemplo, + a + x), que não são válidos em POSIX são suportadas para compatibilidade com versões anteriores.
outros predicados
o predicates -atime , -ctime , -depth , -group , -links , -mtime , -nogroup , -nouser , -print , -prune , -size , -user and -xdev are todos suportados.
O padrão POSIX especifica parênteses ‘(‘, ‘)’, negação ‘!’ eo ‘e’ e ‘ou’ operadores (-a, -o). Todas as outras opções, predicados, expressões e assim por diante são extensões além do padrão POSIX. Muitas dessas extensões não são exclusivos do GNU encontrar, no entanto. O padrão POSIX exige que find detecta laços:
O utilitário find deve detectar loops infinitos; isto é, entrar em um diretório visitado anteriormente que é um antepassado do último arquivo encontrado. Quando detecta um loop infinito, encontrar deverá escrever uma mensagem de diagnóstico para o erro padrão e deverá quer recuperar a sua posição na hierarquia ou terminar.
GNU find está em conformidade com esses requisitos. A contagem de links de diretórios que contêm entradas que são ligações fortes para um antepassado será muitas vezes mais baixos do que o contrário deve ser. Isso pode significar que GNU encontrar, por vezes, vai otimizar afastado a visita de um subdiretório que é na verdade um link para um antepassado.  Desde achado na verdade não entrar em tal subdiretório, é permitido evitar a emissão de uma mensagem de diagnóstico. Embora este comportamento pode ser um pouco confusa, é improvável que qualquer pessoa realmente depende este comportamento. Se a otimização folha foi desligada com -noleaf, a entrada de diretório sempre serão examinados e a mensagem de diagnóstico será emitido quando for conveniente. As ligações simbólicas não pode ser usado para criar os ciclos do sistema de ficheiros, tais como, mas se a opção -L ou a opção -follow está em uso, uma mensagem de diagnóstico é emitido quando find encontra um circuito de ligações simbólicas. Como com loops contendo links de disco rígido, a otimização da folha, muitas vezes, significa que find sabe que não precisa chamar stat () ou chdir () sobre a ligação simbólica, de modo que este diagnóstico não é frequentemente necessário. A opção -d é suportado para compatibilidade com vários sistemas BSD, mas você deve usar a opção -depth compatível com POSIX em vez disso. A variável de ambiente POSIXLY_CORRECT não afeta o comportamento dos testes -regex ou -iregex porque esses testes não são especificados no padrão POSIX.
variáveis ​​ambientais
LANG Fornece um valor padrão para as variáveis ​​de internacionalização que são unset ou nulo. LC_ALL Se for definido como um valor de string não-vazia, substituir os valores de todas as outras variáveis ​​de internacionalização.
LC_COLLATE
O padrão POSIX especifica que essa variável afeta a correspondência de padrão a ser usado para a opção -name. GNU find usa o fnmatch função de biblioteca (3), e, assim, apoiar a ‘LC_COLLATE’ depende da biblioteca do sistema. Esta variável também afecta a interpretação da resposta a -OK, enquanto variável dos LC_MESSAGES ‘selecciona o padrão real utilizado para interpretar a resposta a -OK, a interpretação de qualquer expressão do suporte no padrão não será afectado por’ LC_COLLATE ‘.
LC_CTYPE
Esta variável afeta o tratamento de classes de caracteres utilizados em expressões regulares e também com o teste -nome, se o sistema fnmatch (3) função de biblioteca suporta isso. Esta variável também afeta a interpretação de quaisquer classes de caracteres nas expressões regulares utilizadas para interpretar a resposta ao aviso emitido pelo -ok. O ‘LC_CTYPE’ variável de ambiente também afetará os caracteres que são considerados impublicável quando nomes de arquivos são impressos; consulte a seção UNUSUAL nomes de arquivos.
LC_MESSAGES
Determina o idioma a ser utilizado para mensagens internacionalizadas. Se o ‘POSIXLY_CORRECT’ variável de ambiente estiver definida, isto também determina a interpretação da resposta à solicitação feita pela ação -ok.
NLSPATH
Determina a localização dos catálogos de mensagens de internacionalização.
CAMINHO Afeta os diretórios que são pesquisados ​​para encontrar os executáveis ​​invocados pelos -exec, -execdir, -ok e -okdir.
POSIXLY_CORRECT
Determina o tamanho do bloco usado por -ls e -fls. Se POSIXLY_CORRECT é definido, são blocos de unidades de 512 bytes. Caso contrário, eles são unidades de 1024 bytes.
A definição dessa variável também se desliga mensagens de aviso (ou seja, implica -nowarn) por padrão, porque POSIX requer que, além da saída para -ok, todas as mensagens impressas em stderr são diagnósticos e deve resultar 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 é um modo simbólico válido. Quando POSIXLY_CORRECT está definido, tais construções são tratados como um erro.
Quando POSIXLY_CORRECT é definida, a resposta à solicitação feita pela acção -ok é interpretado de acordo com o catálogo de mensagens do sistema, ao contrário de acordo com a encontrar as próprias traduções de mensagens.
TZ Afeta o fuso horário utilizado para algumas das directivas formato relacionados com o tempo de -printf e -fprintf.
Exemplos
find / tmp núcleo -nome do tipo f -print |  xargs / bin / rm -f

Localizar arquivos chamados de núcleo em ou abaixo do diretório / tmp e excluí-los. Note-se que isso vai funcionar incorrectamente se existem nomes de arquivos que contenham novas linhas, aspas simples ou duplas, ou espaços. find / tmp núcleo -nome do tipo f -print0 | xargs -0 / bin / rm -f
Localizar arquivos chamados de núcleo em ou abaixo do diretório / tmp e excluí-los, os nomes de arquivo de processamento, de tal forma que o arquivo ou nomes de diretórios que contêm simples ou duplas citações, espaços ou novas linhas são tratados corretamente. O teste -nome vem antes do teste do tipo, a fim de evitar ter que chamar de estatísticas (2) em cada arquivo.
encontrar .  arquivo do tipo f -exec ‘{}’ \;

‘arquivo’ é executado em cada arquivo em ou abaixo do diretório atual. Note que as chaves são colocadas entre aspas simples para protegê-los da interpretação como pontuação shell script. O ponto e vírgula é similarmente protegidos pelo uso de uma barra invertida, embora plicas poderiam ter sido utilizados nesse caso também.
encontrar / \
\ (-perm -4000 -fprintf /root/suid.txt% # M% u% p \ n \), \
\ (-size + 100M -fprintf /root/big.txt% -10s% p \ n \)

Atravessar o sistema de arquivos apenas uma vez, listando arquivos setuid e diretórios em /root/suid.txt e arquivos grandes em /root/big.txt.
encontrar $ HOME -mtime 0

Procurar arquivos em seu diretório home que foram modificados nos últimos vinte e quatro horas. Esse comando funciona dessa maneira porque o tempo que cada arquivo foi modificado pela última é dividida por 24 horas e qualquer restante é descartado. Isso significa que, para corresponder -mtime 0, um ficheiro terá que ter uma modificação no passado, que é menos do que 24 horas.
find / sbin / usr / sbin -executable \!  -print -readable

Procurar arquivos que são executáveis, mas não legível.
encontrar .  -perm 664

Procurar arquivos que ler e escrever permissão para o seu proprietário e grupo, mas que outros usuários podem ler, mas não gravar. Os arquivos que atendem a esses critérios, mas têm outras permissões bits definidos (por exemplo, se alguém pode executar o arquivo) não serão correspondidas.
encontrar .  -perm -664

Procurar arquivos que ler e escrever permissão para que seu proprietário e grupo, e que outros usuários podem ler, sem levar em conta a presença de quaisquer bits de permissão extras (por exemplo, o bit executável). Isso irá corresponder a um arquivo que tem o modo de 0777, por exemplo.
encontrar .  -perm / 222

Procurar arquivos que são graváveis ​​por alguém (seu proprietário, ou seu grupo, ou qualquer outra pessoa).
encontrar .  -perm / 220
encontrar .  -perm / u + w, g + w
encontrar .  -perm / u = w, g = w

Todos esses três comandos fazem a mesma coisa, mas o primeiro usa a representação octal do modo de arquivo, e os outros dois usam a forma simbólica. Estes comandos toda procurar arquivos que são graváveis ​​ou por seu proprietário ou seu grupo. Os arquivos não tem que ser escrito pelo tanto o proprietário eo grupo a ser correspondido; ou vai fazer.
encontrar .  -perm -220
encontrar .  -perm -g + w, u + w

Ambos os comandos de fazer a mesma coisa; procurar arquivos que são graváveis ​​tanto por seu proprietário e seu grupo.
encontrar .  -perm -444 -perm / 222!  -perm / 111
encontrar .  -perm -a + r -perm / a + w!  -perm / a + x

Estes dois comandos tanto procurar por arquivos que são lidos para todos (-perm -444 ou -perm -a + r), ter pelo menos um set de gravação bit (-perm / 222 ou -perm / a + w), mas não são executáveis para qualquer um (! -perm / 111 e! -perm / a + x respectivamente).
cd / source-dir
encontrar .  -nome .snapshot -prune -o \ (\ -name * ~ -print0 \!) |
cpio -pmd0 / dest-dir

Este comando copia o conteúdo de / source-dir para / dest-dir, mas omite arquivos e diretórios nomeados .snapshot (e nada neles). Ele também omite arquivos ou diretórios cujo nome termina em ~, mas não seu conteúdo. A construção -prune -o \ (… -print0 \) é bastante comum. A ideia aqui é que a expressão antes -prune corresponde coisas que devem ser podadas. No entanto, a própria ação -prune retorna verdadeiro, então o seguinte -o garante que o lado direito é avaliado apenas para os diretórios que não se podadas (o conteúdo dos diretórios podadas não são sequer visitado, portanto, seus conteúdos são irrelevantes ). A expressão no lado direito da -o está entre parênteses única para maior clareza. Ele enfatiza que a ação -print0 tem lugar apenas para coisas que não têm -prune aplicado a eles. Porque o padrão ‘e’ condição entre os testes se liga mais fortemente que -o, este é o padrão de qualquer maneira, mas os parênteses ajudar a mostrar o que está acontecendo.
encontrar repo / -exec test -d {} / svn -o -d {} / git -o -d {} / CVS..;  \
-print -prune

Dado o seguinte diretório de projetos e seus diretórios administrativos SCM associados, realizar uma pesquisa eficiente para as raízes dos projetos:
repo / project1 / CVS
repo / gnu / project2 / .svn
repo / gnu / project3 / .svn
repo / gnu / project3 / src / .svn
repo / project4 / .git

Neste exemplo, -prune evita descida desnecessária em diretórios que já foram descobertos (por exemplo, nós não procurar project3 / src porque nós já encontrado project3 / .svn), mas garante diretórios irmãos (Projeto2 e Project3) são encontrados.
O status de saída
encontrar saídas com status de 0 se todos os arquivos são processados ​​com sucesso, maior que 0 se ocorrerem erros. Esta é deliberadamente uma descrição muito ampla, mas se o valor de retorno é diferente de zero, você não deve confiar na correcção dos resultados do achado.

Veja também


locate (1), locatedb (5), updatedb (1), xargs (1), chmod (1), fnmatch (3), regex (7), stat (2), lstat (2), ls (1), printf (3), strftime (3), ctime (3), Finding Arquivos (on-line em Info, ou impressa).

História


A partir de findutils-4.2.2, metacaracteres de shell ( ‘*’, ‘?’ Ou ‘[]’, por exemplo) utilizados em padrões de nome de arquivo irá corresponder a uma das principais ‘.’, Porque IEEE POSIX interpretação 126 exige isso.
O -perm sintaxe + MODO foi preterido no findutils-4.2.21, em favor da -perm / MODE. A partir de findutils-4.3.3, -perm / 000 agora corresponde a todos os arquivos em vez de nenhum.
timestamps de nanossegundos de resolução foram implementados em findutils-4.3.3.
A partir de findutils-4.3.11, os conjuntos de ações -Exclua encontrar ‘s status de saída para um valor diferente de zero quando ele falhar. No entanto, encontrar não vai sair imediatamente. Anteriormente, encontrar ‘s status de saída não foi afetado pela falha de -delete.
Não-bugs
$ Find.  -name * -print .c
encontrar: caminhos deve preceder a expressão
Uso: encontrar [H] [-L] [P] [-Olevel] [-D ajudar | árvore | busca | estatísticos | taxas | opt | exec] [caminho …] [expressão]
Isso acontece porque * .c foi expandida pelo shell resultando em encontrar realmente recebendo uma linha de comando como este:
encontrar .  -nome bigram.c code.c frcode.c locate.c -print

Esse comando é claro que não vai funcionar. Em vez de fazer as coisas desta maneira, você deve colocar o padrão entre aspas ou escapar do curinga:
$ Find.  -name \ *. c -print

Erros


Existem problemas de segurança inerentes ao comportamento que o padrão POSIX especifica para encontrar, o que, portanto, não pode ser corrigido. Por exemplo, a ação -exec é inerentemente inseguro, e -execdir deve ser usado em vez disso. Por favor, veja Localizando arquivos para obter mais informações.
O LC_COLLATE variável de ambiente não tem efeito sobre a ação -ok.
A melhor maneira de relatar um bug é usar o formulário em http://savannah.gnu.org/bugs/?group=findutils . A razão para isso é que você vai, em seguida, ser capaz de acompanhar o progresso em corrigir o problema. Outros comentários sobre find (1) e sobre o pacote findutils em geral podem ser enviados para as correções de findutils lista de discussão. Para participar da lista, envie um email para bug-findutils-request@gnu.org . 

Anúncios