/ / Linux shell: Comment donner un paramètre à l'alias de la commande find? - linux, paramètres, grep, trouver, alias

Shell Linux: Comment donner un paramètre à l'alias de la commande find? - linux, paramètres, grep, trouver, alias

Par exemple, je souhaite rechercher le répertoire actuel (exclure ./bin) pour tous les fichiers nommés "Makefile", en tant qu'argument et grep "bibliothèque", comme ci-dessous:

find . ! -path "./build" -name "*Makefile"|xargs grep library

Je ne veux pas tous les taper à chaque fois, je veux juste faire un "alias" avec 2 paramètres, comme:

myfind "*Makefile" "library"

Le paramètre find de myfind est fo. "find" commande en tant que "nom" le deuxième paramètre de la commande "grep", je souhaite également que l'astérisque "*" puisse être passé comme paramètre, sans être analysé.

Comment écrire un tel alias?

Réponses:

2 pour la réponse № 1

Utilisez la fonction:

myfind() { find . ! -path "./build" -name "$1"|xargs grep "$2"; }

1 pour la réponse № 2

Vous ne pouvez pas le faire avec un alias. Vous pouvez écrire un petit script, par exemple.

#!/bin/bash
find . ! -path "./build" -name "$1"|xargs grep $2

Enregistrez-le sous myfind quelque part sur votre chemin et assurez-vous de supprimer le pseudonyme.


1 pour la réponse № 3

Vous avez utilisé la balise linux, donc je suppose que vous utilisez GNU grep. Grep GNU (au moins grep (GNU grep) 2.25) prend en charge les options suivantes, ce qui rend votre tâche très simple. Permettez-moi de citer grep --help:

 -r, --recursive           like --directories=recurse
--include=FILE_PATTERN  search only files that match FILE_PATTERN
--exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
--exclude-from=FILE   skip files matching any file pattern from FILE
--exclude-dir=PATTERN  directories that match PATTERN will be skipped.

Ainsi, votre tâche peut être accomplie en:

grep -r --include=Makefile --exclude-dir=build library

Bien sûr, vous pouvez créer un script ou une fonction shell pour simplifier davantage cela.