groovy -e "def output=args[0]; def terms = args[1].split(','); terms.each { it -> def keyValues = it.split(':'); output = output.replaceAll(keyValues[0],keyValues[1]); } println output;" "`diff -rq . SRC DEST`" "old1:new1,old2:new2"
Эта команда Groovy выполняет следующее:
— diff -rq . SRC DEST
сравнивает рекурсивно содержимое директории «.» (текущей) с директориями «SRC» и «DEST», и выводит разницу в путях к файлам.
— Затем она передает результат этой команды в Groovy-скрипт, который выполняется с помощью флага -e
.
— В Groovy-скрипте разбирается результат и выполняется замена терминов. Новые термины указываются в виде «old:new» и разделяются запятыми.
— Результат с замененными терминами выводится на экран.
Альтернативы: Можно использовать другие инструменты для сравнения файлов, такие как rsync
, и после этого применить замену терминов с использованием других инструментов, например, sed
.