2013-03-05 2 views
5

En git, nous pouvons utiliser * pour spécifier le nom des fichiers, comme *.jpg, *.*, mais qu'en est-il des répertoires?Git chemin pour correspondre à tout nom de répertoire

Existe-t-il une méthode pour spécifier tout le répertoire?

Cela ne fonctionne pas:

git rm firstdirectory/*/thirddirectory 

Le * ne fait pas l'effet "tous les répertoires".

Répondre

3

Votre commande ne fonctionne pas car vous spécifiez un répertoire à git. Votre shell fait l'extension correcte, mais dans le git final reçoit git rm firstdirectory/somedir/thirddirectory, qui git n'aime pas (git rm attend fichiers)

Pour faire votre travail de commande, utilisez le drapeau -r, puis git accepte répertoire:

git rm -r firstdirectory/*/thirddirectory 
0

L'expansion de l'expression globale que vous décrivez n'est pas effectuée par git mais par le shell. Vous pouvez le voir si vous faites quelque chose comme echo *. La commande reçoit une liste d'arguments qui sont des noms de fichiers - pas un seul argument avec un astérisque.

Dans votre cas, find . -ipath est probablement le moyen le plus utile d'identifier les chemins dont vous avez besoin. Vous voudrez peut-être ajouter un -type d pour simplement chercher des répertoires. find a un certain nombre d'options pour sélectionner des objets correspondants. Vous pouvez ensuite le nourrir dans xargs pour travailler avec git. Par exemple:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm 
Questions connexes