для цикла для сравнения пар файлов

У меня есть скрипт, который входит в состав около 30 пар маршрутизаторов. Скрипт выполняет команду и сохраняет вывод в файл, затем переходит к следующему маршрутизатору и так далее.

Теперь я хочу запустить «diff» для каждой пары файлов маршрутизатора, а затем «разбить» следующую пару и т. Д., Например, diff rtr_1a rtr_1b затем diff rtr_2a rtr_2b и т. diff rtr_2a rtr_2b ….

Как я могу сказать «diff», чтобы сравнивать только отдельные пары файлов без жесткого кодирования имен вручную в нескольких отчетах diff?

  • Не удается найти файл для исправления в строке ввода 3
  • сравните 1 столбец в 2 файлах и распечатайте другую строку
  • Применение патча diff
  • Как вы сравниваете две папки и копируете разницу в третью папку?
  • Как сравнить два файла в зависимости от значения первого столбца?
  • Чтение двух файлов в цикл IFS while - есть ли способ получить нулевой результат разбора в этом случае?
  • Что вызывает `diff` для запуска` git diff`?
  • Как я могу сравнить 2 файла и добавить строки, которые не находятся во втором файле?
  • One Solution collect form web for “для цикла для сравнения пар файлов”

    Предполагая, что все файлы называются rtr_ia и rtr_ib для i между 1 и 30:

     #!/bin/bash for (( i = 1; i <= 30; ++i )); do diff "rtr_${i}a" "rtr_${i}b" done 

    Чтобы сохранить отличия в файлах:

     #!/bin/bash for (( i = 1; i <= 30; ++i )); do diff "rtr_${i}a" "rtr_${i}b" >"rtr_${i}.diff" done 

    После комментариев:

     #!/bin/bash for rtra in *rtr*a; do rtrb="${rtra%a}b" diff -- "$rtra" "$rtrb" done 

    или

     #!/bin/bash for rtra in *rtr*a; do rtrb="${rtra%a}b" diff -- "$rtra" "$rtrb" >"${rtra}_${rtrb}.diff" done 

    … сохранить в файл.

    Это соответствует всем prefix-rtrNa файлов prefix-rtrNa а затем для каждого из них создает соответствующее имя файла prefix-rtrNb ( ${rtra%a} удаляет конечный a из значения $rtra ). Затем он разграничивает два файла.

    Linux и Unix - лучшая ОС в мире.