2013-03-05 9 views

risposta

3

Il tuo comando non funziona perché stai specificando una directory da git. Fa la shell la corretta espansione, ma alla fine git riceve git rm firstdirectory/somedir/thirddirectory, che git non piace (git rm aspetta file)

Per rendere il vostro lavoro di comando, utilizzare il flag -r, quindi git accetta directory:

git rm -r firstdirectory/*/thirddirectory 
0

L'espansione di espressione glob che descrivi non viene eseguita da git ma dalla shell. Puoi vedere questo se fai qualcosa come echo *. Il comando riceve un elenco di argomenti che sono nomi di file - non un singolo argomento con un asterisco.

Nel tuo caso, find . -ipath è probabilmente il modo più utile per identificare i percorsi necessari. Si consiglia di aggiungere uno -type d solo per recuperare le directory. find ha un numero di opzioni per selezionare gli oggetti corrispondenti. È quindi possibile alimentare questo in xargs per lavorare con git. Ad esempio:

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