Existem opções '-name' e '-exec' ou argumentos não-opcionais de 'find'?

0

As opções -name e -exec ou argumentos não opcionais de find ? Eles se parecem com opções curtas e são chamados de expressões de busca, se não me engano. Por exemplo,

find . -name "*.txt" -exec echo {} \;
    
por Ben 20.11.2018 / 23:20

2 respostas

1

O comando find tem apenas duas opções no POSIX ( -H , -L ), ou cinco no GNU (também -P , -D debug_opt , -O# ). Todos os outros argumentos não são opções e, portanto, são argumentos não opcionais.

Notavelmente, as opções para find precedem os caminhos, enquanto todas as expressões de localização devem segui-las: find [option...] path... [expression...] . (O GNU find possui algumas primárias adicionais que também chamam de "options" às vezes, como -maxdepth ; elas não são opções verdadeiras, aparecendo dentro da parte da expressão, mas suponho que as mensagens de aviso sejam mais compreensíveis se as chamarem dessa forma) .

    
por 20.11.2018 / 23:39
1

-name , -exec , -print etc. não são opção para a find utility mas operandos . Um operando é

An argument to a command that is generally used as an object supplying information to a utility necessary to complete its processing. Operands generally follow the options in a command line.

(de as definições POSIX ), ou seja, uma não-opção que informa a utilidade o que fazer (como o file no comando rm file que informa rm qual arquivo excluir).

A descrição padrão POSIX da find utility chama esses operandos primárias e isso é também o que eles são chamados em sistemas BSD.

No manual GNU find , eles são chamados de expressões e são divididos em grupos, dependendo do seu uso:

  • Testes (por exemplo, -name , -mtime )
  • Ações (por exemplo, -delete , -print )
  • Opções globais (por exemplo, -maxdepth , -depth )
  • Opções posicionais (por exemplo, -follow )
  • Operadores (por exemplo, -not , -and )

O padrão POSIX find tem apenas duas opções reais, -H e -L . Isso tem a ver com o modo como os links simbólicos devem ser manipulados.

O padrão POSIX não define nenhuma opção de vários caracteres ou "opção longa" para nenhum utilitário. Isso não impede que implementações adicionem opções longas, e os utilitários GNU em particular são bem conhecidos por adicionar opções longas expressivas para recursos de conveniência estendidos.

    
por 20.11.2018 / 23:38