O comando find -exec no Linux

O comando find -exec no Linux

Seu sistema Linux consiste em milhares de arquivos. Procurá -los manualmente é um aborrecimento. Nesses casos, seu sistema Linux oferece dois comandos distintos para encontrar um arquivo específico: o comando locate e o comando find. O comando find, em particular, é uma ótima ferramenta quando você deseja especificar atributos de arquivo e ajustar sua pesquisa por um arquivo. Usando o comando find, você pode até agir no arquivo que encontra usando o argumento EXEC. Neste tutorial, discutiremos o comando de Find -Exec.

O comando de localização

O comando find é mais lento que o comando Locate, mas pesquisa todo o sistema de arquivos ao vivo! Além disso, usando o comando find, você pode ajustar sua pesquisa usando um grande número de atributos. O que isso significa em inglês é que você pode ajustar sua pesquisa usando quase qualquer parâmetro que desejar. Por exemplo, você pode pesquisar arquivos usando o nome do arquivo, o tamanho do arquivo, a permissão do arquivo, os tempos de modificação do arquivo, etc. Basicamente, é um comando muito útil!

O formato básico do comando find é o seguinte:

Encontre [lugar para pesquisar]

Ex:

Encontre / -name Secret.TXT

Aqui, o / representa o local para procurar o arquivo que queremos, e pedimos para procurar um arquivo com o nome de segredo.TXT.

Encontre exec

A melhor característica do comando find é o seu argumento EXEC que permite ao usuário do Linux que execute qualquer comando nos arquivos que sejam encontrados. Em outras palavras, as ações podem ser executadas nos arquivos que são encontrados.

O comando Find -Exec assumirá o seguinte formato:

Encontre [Path] [argumentos] -exec [comando] [espaço reservado] [delimiter]

Temos que aprender sobre algumas coisas antes de podermos usar o argumento EXEC:

  1. é chamado de espaço reservado. Este espaço reservado manterá o resultado encontrado pelo encontro.

Então, se vamos dizer que estamos procurando um arquivo chamado segredo.txt, então escrevíamos:

Encontre / -name Secret.TXT

Isso encontrará um monte de arquivos no meu sistema quando eu quiser executar um comando. Em vez de escrever o nome do arquivo encontrado, substituí -lo por ele o espaço reservado .

Por exemplo,

Encontre / -name 'segredo.txt '2> /dev /null -exec Cat \;

Observação: Nesse caso, deixe -me também apontar o que o 2> /dev /null faz. Os 2 significa erro padrão, que queremos ignorar. Assim, enviamos para /dev /null. Em essência, estamos levando os erros e jogando -os fora.

Por enquanto, vamos ignorar o \; parte e concentre -se no espaço reservado. Por que adicionamos o após a palavra "gato"? Bem, ele encontrará o arquivo que estou procurando e, quando o encontrar, ele passará o arquivo para o argumento EXEC como este:

-EXEC CAT \;

ou

-executivo gato/home/kalyani/segredo.TXT \;

Então, é um espaço reservado para os resultados percorridos pelo comando de encontro!

  1. \; é um delimitador.

\; é um delimitador. Este delimitador em particular é como o argumento de localização pode terminar. Quando termina dessa maneira, uma ação é tomada em cada resultado que encontra.

Por exemplo, eu criei três segredos.Arquivos TXT: segredo.txt, secret2.txt e secret3.TXT.

Agora, vou emitir o seguinte comando:

encontre / -name 'secret*.txt '2> /dev /null -exec Cat \;

Como você pode ver na imagem, ela encontrou os três arquivos e apagou o conteúdo um por um. Então, o que o \; fazer? Bem, garante que as medidas sejam tomadas em cada arquivo. Nesse caso, temos três arquivos. O comando CAT é aplicado primeiro ao primeiro resultado: secret2.TXT. Então, é aplicado ao segundo resultado: secret3.TXT. Finalmente, é aplicado ao terceiro resultado: segredo.TXT.

Aqui, quando você usa -EXEC CAT \; argumento, Ele executa o seguinte:

CAT secret2.TXT;
gato secret3.TXT;
segredo do gato.TXT;
  1. \+ é outro delimitador.

Este é outro tipo de delimitador. Se e quando isso for usado, a ação é tomada nos resultados encontrados.

Por exemplo:

encontre / -name 'secret*.txt '2> /dev /null -exec ls \+

A imagem a seguir mostrará a diferença entre o \; e o \+:


Aqui, quando você use -exec ls \; argumento, Ele executa o seguinte:

LS Secret2.TXT;
LS secret3.TXT;
LS Secret.TXT;

Enquanto -Exec \+ argumento executa o seguinte:

LS Secret2.txt secret3.TXT Secret.TXT;

Vários executivos

Agora, argumentos múltiplos -exec também podem ser passados ​​para o comando.

O formato geral será o seguinte:

Encontre [Path] [argumentos] -exec [command_1] [espaço reservado] [delimiter] -exec [command_2] [espaço reservado] [delimiter]… -exec [command_n] [espaço reservado] [delimitador]

Por exemplo:

encontre / -name 'secret*.txt '2> /dev /null -exec ls \; -exec Cat \;

Aqui, como você pode ver, ele pega o primeiro resultado e passa pelo primeiro comando. Então, ele passa pelo segundo comando e depois vai para o segundo resultado.

Em essência, os resultados são passados ​​da seguinte forma:

LS Secret2.TXT; CAT secret2.TXT;
LS secret3.TXT; gato secret3.TXT;
LS Secret.TXT; segredo do gato.TXT;

Outro exemplo:

encontre / -name 'secret*.txt '2> /dev /null -exec ls \+ -exec Cat \+

Nesse caso, os resultados são passados ​​da seguinte forma:

LS Secret2.txt secret3.TXT Secret.TXT; CAT secret2.txt secret3.TXT Secret.TXT;

Conclusão

Linux é um sistema maravilhoso com um gazilhão de arquivos. No entanto, ele vem com apenas dois comandos distintos para pesquisar no palheiro da nossa agulha. O melhor desses dois comandos é o comando de localização. O comando encontre pesquisas em todo o sistema de arquivos para que demore um tempo. Além disso, pode tomar ações nos resultados encontrados. Isso significa que você pode aplicar vários comandos nos arquivos que são encontrados. Se você quiser movê -los, se quiser removê -los ou até fazer coisas loucas para os resultados do comando de encontro, você pode; Seu conhecimento é o limite. Então, da próxima vez para fazer algo em um arquivo, você pode fazê -lo usando o comando find -exec! Esperamos que você tenha achado este artigo útil. Verifique os outros artigos de dica do Linux para obter mais dicas e informações.