Замена строки в большом количестве исходных файлов Java

У меня есть около 600 классов Java в проекте со случайными именами (в их именах нет шаблонов).

Я хочу заменить определенную строку внутри этих классов другой строкой.

Например, строка внутри этих файлов

System.out.println("Product is: "+myProduct);

и я хочу заменить эту строку

System.out.println("Object is: "+myObject);

Приведенная выше строка является лишь примером, показывающим, чего я хочу достичь.

Я использую RAD 7.5 для разработки.

Есть ли простой способ сделать это во всех 600 файлах одновременно?

2 ответа

Решение

Да. Открыв диалоговое окно "Поиск - файл...", введите то, что вы хотите найти, и фильтр файла, который вы хотите, а затем нажмите " Заменить".

Нет доступа к системе UNIX.

Это твоя первая проблема. Установите Cygwin, чтобы иметь твердую оболочку, и тогда вы сможете научиться выполнять пакетные операции с исходным кодом. Быть способным grep Легкость в использовании может значительно облегчить изучение больших баз кода и сузить объем кода, который может привести к сложной проблеме.

После того, как вы установили это, вы можете решить вашу непосредственную проблему с

perl -i.bak \
  -pe 's/System.out.println\("Product is: "+myProduct\);/System.out.println("Object is: "+myObject);/' \
  file0.java file1.java ...

Разбивая это:

  1. -i означает обрабатывать аргументы как файлы для изменения на месте
  2. .bak означает сделать копию входных файлов с .bak продление до внесения изменений
  3. -p означает завернуть программу в цикл, который захватывает строку, запускает программу и печатает строку
  4. -e 's/.../.../' означает, что указанная часть является программой для запуска и выполняет подстановку регулярного выражения.
  5. остальные файлы для запуска.

С другой стороны,

find . -name \*.java

должен перечислить все исходные файлы Java в текущем каталоге.

Предполагая, что каталог не имеет пробелов в своем пути, вы можете сделать

find . -name \*.java | xargs perl -i.bak -pe 's/.../.../'

где ... это замена выше, чтобы запустить его через все источники Java в рабочем каталоге.

Другие вопросы по тегам