Como eu usaria git e bash para mover recursivamente todos os arquivos na pasta com o nome 'n' em um diretório [closed]

0

Estou trabalhando na reorganização de um projeto existente. Eles tinham a seguinte estrutura estranha.

src
-main
--app
---item
----src
-----Item.coffee
---other
----src
-----Other.coffee

Eu quero mover todos esses arquivos no git para que Item.coffee, etc esteja agora sob ...

src
-main
--app
---item
----Item.coffee
---other
----Other.coffee

Qual é o comando Bash / Git apropriado para isso?

    
por Jackie 11.10.2016 / 20:48

1 resposta

2

Quantos arquivos você está movendo? A menos que você esteja falando sobre dezenas / centenas / milhares de arquivos, apenas mova fisicamente o arquivo - manualmente via GUI ou via o comando mv - para o novo local e o Git detectará o fato de que o arquivo era:

  1. Excluído do local antigo.
  2. É um novo arquivo no novo local.

Então, para adicionar os novos arquivos, basta fazer um git add * na raiz do seu projeto depois que os arquivos forem movidos, faça um commit e o Git manipulará o resto, incluindo a observação de que o arquivo que estava em um lugar agora está em outro .

E se de alguma forma você estiver falando de dezenas / centenas / milhares de arquivos, você precisará apenas criar um script no Bash para mover os arquivos e fazer o mesmo git add * e confirmar processo e tudo deve ser bom.

Um script Bash como esse deve funcionar para mover todos os itens que terminam com a extensão *.coffee em um diretório da árvore, independentemente do nível de aninhamento:

find . -name '*.coffee' |\
  while read item_path
  do
    item_dirname=$(dirname "${item_path}");
    mv ${item_path} ${item_dirname}/..;
  done

PS: Em nenhum momento você deve usar git rm para um procedimento como este. Apenas mova os arquivos, use git add * para adicionar os arquivos recém-movidos e então faça um commit do Git e tudo ficará bem.

    
por 11.10.2016 / 21:05

Tags