Question

Avec cet ensemble de commandes, que sont les {} et \; caractères pour?

find . -name '*.clj' -exec grep -r resources {} \;
Était-ce utile?

La solution

Voir la recherche de l'homme . (en particulier la partie sur -exec )

Lorsque vous utilisez -exec pour exécuter une commande sur chacun des fichiers trouvés, le {} est remplacé par le nom de chaque fichier trouvé et la commande est arrêtée. par \;

Dans votre exemple, tous les fichiers situés dans le répertoire actuel (. ), correspondant au nom *. clj auront la commande grep -r resources exécuté sur eux (pour trouver la chaîne ressources si elle existe dans chacun de ces fichiers).

C'est en fait quelque peu redondant, car -r est destiné à la recherche récursive de sous-répertoires, et c'est ce que find fait déjà.

Autres conseils

Dans find, le paramètre -exec récupère le reste des paramètres jusqu'à la fin; (point-virgule) qui doit être échappé, d’où le \ ;. Dans cette plage, {} est remplacé par le nom de fichier en cours d'inspection.

Considérez cette commande alternative que je trouve plus facile à comprendre:

find . -name *.clj | xargs grep -r resources 

La chaîne de caractères " {} " sera remplacé par le fichier en cours de traitement. Le point-virgule d'échappement met fin à l'argument de commande pour l'option -exec.

La chaîne {} dans find est remplacée par le chemin du fichier en cours.

Le point-virgule est utilisé pour mettre fin à la commande shell invoquée par l'utilitaire find .

Il doit être échappé ou cité pour ne pas être interprété par le shell, car ; est l'un des caractères spéciaux utilisés par le shell (opérateurs de liste).

Voir aussi: Pourquoi les barres obliques inverses et les points-virgules sont-ils nécessaires avec l'option -exec de la commande find?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top