Git: переименовать или переместить все файлы одновременно - PullRequest
14 голосов
/ 05 февраля 2012

Я хочу переименовать все файлы erb в моем проекте Git в haml. (Например, с index.html.erb на index.html.haml)

Если я переименую каждый файл, мне придется вводить следующую команду более тридцати раз.

$ git mv app/views/pages/index.html.erb app/views/pages/index.html.haml

Я попробовал команду ниже, но она не сработала.

$ git mv app/views/**/*.erb app/views/**/*.haml

usage: git mv [options] <source>... <destination>

    -n, --dry-run         dry run
    -f, --force           force move/rename even if target exists
    -k                    skip move/rename errors

Как я могу переименовать их сразу?

Ответы [ 4 ]

27 голосов
/ 05 февраля 2012
for i in $(find . -iname "*.erb"); do
    git mv "$i" "$(echo $i | rev | cut -d '.' -f 2- | rev).haml";
done

Для каждого файла .erb, git mv он сам по себе с расширением ".erb", замененным на ".haml".

2 голосов
/ 25 июня 2018

Один вкладыш с использованием powershell

Dir *.erb -Recurse | foreach { git mv $_.FullName $_.FullName.replace("erb", "haml")}
1 голос
/ 06 сентября 2018

Это сработало для меня с помощью Powershell:

Get-ChildItem -File | foreach { git mv ($_.BaseName+".js") ($_.BaseName+".ts") }

В целях безопасности я решил не добавлять -Recurse.

Замените расширения на все, что вам нужно.

0 голосов
/ 03 апреля 2018

В Windows вам нужно 2 пакетных файла. 1 мы сгенерируем, другой исправим.

Пример ниже, чтобы git рекурсивно переименовал все * .js в * .ts Предположение: в имени файла нет пробелов.

Шаг 1: исправленный файл git-rn.bat

@echo off
set _srcfile=%1
set _tgtfile=%_srcfile:.js=.ts%
git mv %_srcfile% %_tgtfile%

Сохраните его в том же месте / каталоге, где git-rn-all.bat

Шаг 2: сгенерировать файл git-rn-all.bat с помощью команды

cd 'C: \ projects \ some-git-project \ src \ client \ app' dir / a / s / b * .js> git-rn-all.bat

Шаг 3: Измените git-rn-all.bat для наших нужд.

Редактировать git-rn-all.bat и text-replace-all - общий базовый путь для добавления вызова в git-rn.bat . Любой текстовый редактор может легко это сделать.

пример:

C: \ проекты \ некоторые-ГИТ-проект \ SRC \ клиент \ приложение \ app.module.js

становится

вызов git-rn.bat C: \ projects \ some-git-project \ src \ client \ app \ app.module.js

Шаг 4: выполнить git-rn-all.bat

вы увидите довольно большой вывод

Шаг 5: удалить пакетные файлы

удалить git-rn-all.bat и git-rn.bat возможно, они вам больше не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...