Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: shell, определение с чем работаем: директория или файл?  (Прочитано 872 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nanotexnik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
У нас есть исходный каталог ( 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"
« Последнее редактирование: 05 Ноября 2011, 15:08:27 от nanotexnik »

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Если цели практические, то rsync

andrey_p

  • Гость
Цитировать
Может кто знает более элегантный способ?

test -d/-f

man test

Оффлайн nanotexnik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Если цели практические, то rsync
Спасибо, именно это я и искал.

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.