Я сравниваю несколько файлов из каталога. Среди файлов некоторые подобраны, некоторым не соответствуют. Я могу произвести различие с помощью различной команды. Я хочу послать несогласованные файлы по электронной почте как вложения.
#!/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
Спасибо
Это должно работать. Это создает список отличающихся файлов при циклическом повторении через первый цикл и затем использует другую команду 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