Сценарий оболочки, чтобы сравнить несколько файлов из каталога, но присоединить только несогласованные файлы как почтовое вложение

Я сравниваю несколько файлов из каталога. Среди файлов некоторые подобраны, некоторым не соответствуют. Я могу произвести различие с помощью различной команды. Я хочу послать несогласованные файлы по электронной почте как вложения.

#!/bin/bash

DIR1=/usr/local/apps/B2B/filecompare/inf
DIR2=/usr/local/apps/B2B/filecompare/gen/genB

DEST_DIR1=/usr/local/apps/B2B/filecompare/moved/cmpinf
DEST_DIR2=/usr/local/apps/B2B/filecompare/moved/cmpgen

export RESULT=$1

for FILE1 in `ls $DIR1`
do
    if [ ! -f $DIR2/$FILE1 ]; then
        echo "  $FILE1 exists in $DIR1 but not found in $DIR2. Skipping file." >> $RESULT
    else
        echo "  Comparing $DIR1/$FILE1 $DIR2/$FILE1." >> $RESULT
        diff -B $DIR1/$FILE1 $DIR2/$FILE1 >> $RESULT
        #diff $DIR1/$FILE1 $DIR2/$FILE1 >>RESULT
        echo "  Done comparing $DIR1/$FILE1 $DIR2/$FILE1." >> $RESULT

        mv $DIR1/$FILE1 $DEST_DIR1
        mv $DIR2/$FILE1 $DEST_DIR2
        echo "  Done moving files" >> $RESULT

    fi
done

for FILE2 in `ls $DIR2`
do
    if [ ! -f $DIR1/$FILE2 ]; then
        echo "  $FILE2 exists in $DIR2 but not found in $DIR1. Skipping file." >> $RESULT
    fi
done

echo "  Done comparing." >> $RESULT
zip -r $DEST_DIR1/downlaod.zip $DEST_DIR1/$FILE1 $DEST_DIR2/$FILE1
mail -a $DEST_DIR1/downlaod.zip xvz@abc.com

Спасибо

2
задан 6 November 2018 в 21:43

1 ответ

Это должно работать. Это создает список отличающихся файлов при циклическом повторении через первый цикл и затем использует другую команду zip для архивирования их.

#!/bin/bash

DIR1=/usr/local/apps/B2B/filecompare/inf
DIR2=/usr/local/apps/B2B/filecompare/gen/genB

DEST_DIR1=/usr/local/apps/B2B/filecompare/moved/cmpinf
DEST_DIR2=/usr/local/apps/B2B/filecompare/moved/cmpgen

export RESULT=$1
touch different.txt

for FILE1 in `ls $DIR1`
do
    if [ ! -f $DIR2/$FILE1 ]; then
        echo "  $FILE1 exists in $DIR1 but not found in $DIR2. Skipping file." >> $RESULT
    else
        echo "  Comparing $DIR1/$FILE1 $DIR2/$FILE1." >> $RESULT
        diff -B $DIR1/$FILE1 $DIR2/$FILE1 >> $RESULT
        #diff $DIR1/$FILE1 $DIR2/$FILE1 >>RESULT
        echo "  Done comparing $DIR1/$FILE1 $DIR2/$FILE1." >> $RESULT

        # NEW: register if there is a diff
        is_diff=$(diff -q $DIR1/$FILE1 $DIR2/$FILE2 >/dev/null; echo $?)

        # NEW: build a list of the files that are different
        if [ "$is_diff" -gt 0 ]; then
            echo $DEST_DIR1/$FILE1 >> different.txt
            echo $DEST_DIR2/$FILE1 >>  different.txt
        fi


        mv $DIR1/$FILE1 $DEST_DIR1
        mv $DIR2/$FILE1 $DEST_DIR2
        echo "  Done moving files" >> $RESULT

    fi
done

for FILE2 in `ls $DIR2`
do
    if [ ! -f $DIR1/$FILE2 ]; then
        echo "  $FILE2 exists in $DIR2 but not found in $DIR1. Skipping file." >> $RESULT
    fi
done

echo "  Done comparing." >> $RESULT
# NEW: zip the file list of differing files
zip $DEST_DIR1/download.zip -@ < different.txt
mail -a $DEST_DIR1/download.zip xvz@abc.com
0
ответ дан 2 December 2019 в 09:22

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

Похожие вопросы: