La commande find -exec sur Linux

La commande find -exec sur Linux

Votre système Linux se compose de milliers de fichiers. Les rechercher manuellement est un problème. Dans de tels cas, votre système Linux propose deux commandes distinctes pour trouver un fichier particulier: la commande Locate et la commande find. La commande Find, en particulier, est un excellent outil lorsque vous souhaitez spécifier les attributs de fichiers et affiner votre recherche d'un fichier. À l'aide de la commande find, vous pouvez même agir sur le fichier que vous trouvez en utilisant l'argument exécutif. Dans ce tutoriel, nous discuterons de la commande find -exec.

La commande find

La commande find est plus lente que la commande Locate, mais elle recherche l'ensemble du système de fichiers en direct! De plus, en utilisant la commande Find, vous pouvez affiner votre recherche en utilisant un grand nombre d'attributs. Ce que cela signifie en anglais, c'est que vous pouvez affiner votre recherche en utilisant presque tous les paramètres que vous souhaitez. Par exemple, vous pouvez rechercher des fichiers à l'aide du nom du fichier, de la taille du fichier, de l'autorisation du fichier, des temps de modification du fichier, etc. Fondamentalement, c'est une commande très utile!

Le format de base de la commande Find est le suivant:

trouver [lieu pour rechercher]

Ex:

trouver / -nom secret.SMS

Ici, le / représente l'endroit pour rechercher le fichier que nous voulons, et nous lui avons demandé de rechercher un fichier du nom de Secret.SMS.

Trouver l'exec

La meilleure fonctionnalité de la commande find est son argument exécutif qui permet à l'utilisateur Linux de réaliser n'importe quelle commande sur les fichiers trouvés. En d'autres termes, des actions peuvent être effectuées sur les fichiers trouvés.

La commande find -exec prendra le format suivant:

trouver [path] [arguments] -exec [Command] [placeholder] [Delimiter]

Nous devons en savoir plus sur quelques éléments avant de pouvoir utiliser l'argument Exec:

  1. est appelé un espace réservé. Cet espace réservé tiendra le résultat trouvé par Find.

Donc, si disons que nous recherchons un fichier appelé Secret.txt, alors nous écrivions:

trouver / -nom secret.SMS

Cela trouvera tout un tas de fichiers sur mon système lorsque je souhaite exécuter une commande. Au lieu d'écrire le nom du fichier trouvé, nous le remplacerons avec l'espace réservé .

Par exemple,

Find / -Name 'Secret.txt '2> / dev / null -exec cat \;

Note: Dans ce cas, permettez-moi également de souligner ce que fait le 2> / dev / null. Le 2 signifie Error standard, que nous voulons ignorer. Ainsi, nous l'envoyons à / dev / null. Essentiellement, nous prenons les erreurs et les jetons.

Pour l'instant, ignorons le \; se séparer et se concentrer sur l'espace réservé. Pourquoi avons-nous ajouté le après le mot «chat»? Eh bien, il trouvera le fichier que je recherche, puis quand il l'a trouvé, il passera le fichier à l'argument Exec comme ceci:

-Exec Cat \;

ou

-Exec Cat / Home / Kalyani / Secret.SMS \;

Donc, c'est un espace réservé pour les résultats jetés par la commande Find!

  1. \ est un délimiteur.

\ est un délimiteur. Ce délimiteur particulier est comment l'argument de recherche peut se terminer. Quand il se termine de cette manière, une action est prise sur chaque résultat qu'il trouve.

Par exemple, j'ai créé trois secrètes.Fichiers TXT: secret.txt, secret2.txt et secret3.SMS.

Maintenant, je vais émettre la commande suivante:

trouver / -name 'secret *.txt '2> / dev / null -exec cat \;

Comme vous pouvez le voir sur l'image, il a trouvé les trois fichiers, et il a cris de leur contenu un par un. Alors, que fait le \; faire? Eh bien, cela garantit que les mesures sont prises sur chaque fichier. Dans ce cas, nous avons trois fichiers. La commande CAT est d'abord appliquée au premier résultat: Secret2.SMS. Ensuite, il est appliqué au deuxième résultat: Secret3.SMS. Enfin, il est appliqué au troisième résultat: secret.SMS.

Ici, quand vous utilisez -Exec Cat \; argument, il exécute ce qui suit:

Cat Secret2.SMS;
Cat Secret3.SMS;
Cat secret.SMS;
  1. \ + est un autre délimiteur.

Ceci est un autre type de délimiteur. Si et quand cela est utilisé, des mesures sont prises sur les résultats trouvés.

Par exemple:

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

L'image suivante vous montrera la différence entre le \; et le \ +:


Ici, quand tu use -exec ls \; argument, il exécute ce qui suit:

LS Secret2.SMS;
LS Secret3.SMS;
LS Secret.SMS;

Alors que -Exec \ + L'argument exécute ce qui suit:

LS Secret2.txt secret3.txt secret.SMS;

Plusieurs dirigeants

Maintenant, les arguments multiples-EXEC peuvent également être transmis à la commande.

Le format général sera le suivant:

Rechercher [path] [arguments] -exec [Command_1] [placeholder] [Delimiter] -Exec [Command_2] [placeholder] [Delimiter]… -Exec [Command_n] [PlaceHolder] [Delimiter]

Par exemple:

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

Ici, comme vous pouvez le voir, il prend le premier résultat et le passe par la première commande. Ensuite, il le passe par la deuxième commande, puis passe au deuxième résultat.

Essentiellement, les résultats sont passés comme suit:

LS Secret2.SMS; Cat Secret2.SMS;
LS Secret3.SMS; Cat Secret3.SMS;
LS Secret.SMS; Cat secret.SMS;

Un autre exemple:

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

Dans ce cas, les résultats sont passés comme suit:

LS Secret2.txt secret3.txt secret.SMS; Cat Secret2.txt secret3.txt secret.SMS;

Conclusion

Linux est un merveilleux système avec un Gazillion Files. Cependant, il est livré avec seulement deux commandes distinctes pour rechercher dans la botte de foin pour notre aiguille. La meilleure de ces deux commandes est la commande Find. La commande recherche sur l'ensemble du système de fichiers afin qu'il prenne un certain temps. De plus, il peut prendre des mesures sur les résultats trouvés. Cela signifie que vous pouvez appliquer diverses commandes sur les fichiers trouvés. Si vous voulez les déplacer, si vous voulez les supprimer, ou même faire des choses folles aux résultats de la commande Find, vous pouvez; Vos connaissances sont la limite. Donc, la prochaine fois pour faire quelque chose dans un fichier, vous pouvez le faire en utilisant la commande find -exec! Nous espérons que vous avez trouvé cet article utile. Vérifiez les autres articles sur les indices Linux pour plus de conseils et d'informations.