Скрипт сравнивающий содержимое директорий на bash

Рейтинг: 1Ответов: 1Опубликовано: 03.05.2011

Как написать скрипт выполняющий сравнение указанных (в качестве параметров) директорий по содержимому на основе информации о размере файлов и дате их изменения? Необходимо вывести для каждого файла имеющегося в обеих директориях примерно такое:

$ diff-dir /tmp/dir1 /tmp/dir2/    
< file1.txt (новее в dir2)
< file2.txt (новее в dir2)
> file3.txt (старее в dir2)
+ subdir1 (отсутствует в dir1)
- subdir2 (отсутствует в dir2)

Ответы

▲ 2

Вопрос старый, но негоже оставлять без ответа.
Как-то так. Уверен, что есть более изящный путь (в bash он всегда найдётся :D), но так - лучше, чем ничего.

#!/bin/bash 
ls $1 | while read i
do
if [ -e "$2/$i" ]
then 
    if [ `stat -c %Y $1/$i` -lt `stat -c %Y $2/$i` ] 
    then echo "> $i (старее в $2)"
    else echo "< $i (старее в $1)"
    fi
else
    echo "- $i (отсутствует в $2)"
fi
done

ls $2 | while read i  
do
if [ ! -e "$1/$i" ]
then echo "+ $i (отсутствует в $1)"
fi
done