У нас есть исходный каталог ( a ) и конечный( b ), требуется удалить из каталога b, файлы которых нету в каталоге a.
Буду благодарен если кто-то поможет, как можно сделать это проше.
for file in *
do
if(test -f "$a/$file")
then
continue
else
rm "$b/$file"
fi
В данном примере из самого каталога b файлы удаляются, теперь нужно реализовать рекурсивный вызов для подкаталогов.
Требуется узнать работаем с директорией или файлом для дальнейшего рекурсивного вызова, как это можно сделать?
Пользователь решил продолжить мысль 05 Ноября 2011, 15:00:56:
Проблему решил, вот так определял директорию
buf=`sudo file "$2/$file"`
if [ "$buf" = "$2/$file: directory" ]
Может кто знает более элегантный способ?
Еси кому интерестно, вот конечный код для решения поставленой мной в начале задачи.
rec_del()
{
cd "$2"
for file in *
do
buf=`sudo file "$2/$file"`
if [ "$buf" = "$2/$file: directory" ]
then
if(test -d "$1/$file")
then
rec_del "$1/$file" "$2/$file"
continue
else
rm -r "$2/$file"
continue
fi
fi
if(test -f "$1/$file")
then
continue
else
rm "$2/$file"
fi
done
}
Изначально конечно запускаем эту функцию с входными данными a и b
rec_del "$a" "$b"