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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Нужна подсказка по командной строке  (Прочитано 1245 раз)

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

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Как сравнить два дерева каталогов и переместить совпадающие файлы в отдельное дерево с той же структурой? Или хотя бы получить список совпадающих файлов...
OpenSUSE 11.3 x86-64

Оффлайн Alex2000

  • Активист
  • *
  • Сообщений: 317
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #1 : 12 Марта 2009, 05:28:54 »
В mc можно.

Оффлайн Svertal

  • Активист
  • *
  • Сообщений: 893
  • КиберПанк
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #2 : 12 Марта 2009, 05:47:57 »
Для сравнения можно использовать diff
diff -r /cat1 /cat2Чтобы сразу синхронизировать можно rsync воспользоваться
rsync -av ~/source_cat/ ~/dest_cat
Причем в каталоге источнике важен завершающий слеш.
Невнимательно прочитал задачу.
« Последнее редактирование: 12 Марта 2009, 06:11:46 от Svertal »

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #3 : 12 Марта 2009, 10:44:49 »
diff дает отличающиеся файлы, а мне нужно наоборот.
OpenSUSE 11.3 x86-64

Оффлайн Svertal

  • Активист
  • *
  • Сообщений: 893
  • КиберПанк
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #4 : 12 Марта 2009, 11:28:30 »
А если diff без -r, тогда выводит общие подкаталоги.

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #5 : 12 Марта 2009, 11:29:25 »
А если diff без -r, тогда выводит общие подкаталоги.
Без рекурсии, я понимаю? То есть, не по всему дереву?
OpenSUSE 11.3 x86-64

Оффлайн Voyageur

  • Новичок
  • *
  • Сообщений: 17
  • My eyes have seen you...
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #6 : 12 Марта 2009, 14:35:59 »
А если diff без -r, тогда выводит общие подкаталоги.
Не совсем так:
lucifer:~/work$ls d1/*
d1/d1.1:

d1/d1.2:
1.txt  d1.2.1  d2.2.1
----------------------------
lucifer:~/work$ls d2/*
d2/d1.2:
2.txt  d2.2.1

d2/d2.1:
----------------------------

Как видим, есть общие директории d1/d1.2/d2.2.1 и d2/d1.2/d2.2.1, они пустые. А вот каталоги d1/d1.2 и d2/d1.2 различаются по содержимому.
Запускаем diff d1 d2:
Only in d1: d1.1
Common subdirectories: d1/d1.2 and d2/d1.2
Only in d2: d2.1
Видим, что дальше первого уровня diff не полез. Если добавим опцию -r (рекурсия), то действительно получим верный результат, но этот результат покажет нам отличия!

Оффлайн Svertal

  • Активист
  • *
  • Сообщений: 893
  • КиберПанк
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #7 : 12 Марта 2009, 14:51:34 »
Точно, без рекурсии не интересно, если поддиректории тоже важны.
Тогда так?
diff -rs ./d ./d1
« Последнее редактирование: 12 Марта 2009, 15:25:38 от Svertal »

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #8 : 12 Марта 2009, 15:34:18 »
О, вот это уже интереснее, спасибо.
OpenSUSE 11.3 x86-64

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #9 : 16 Марта 2009, 10:35:21 »
У меня не работает с несколькими папками.

И как получить список именно идентичных? Она выводит все.
« Последнее редактирование: 16 Марта 2009, 10:37:16 от Nxx »
OpenSUSE 11.3 x86-64

Оффлайн Svertal

  • Активист
  • *
  • Сообщений: 893
  • КиберПанк
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #10 : 16 Марта 2009, 11:51:26 »
И как получить список именно идентичных? Она выводит все.
Выводит все, но перед идентичными пишет "Файлы"... и в конце строки "идентичны"
А перед уникальными пишет "Только в"
Дальше можно отсортировать все это с помощью sed.

Оффлайн Nxx

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1635
    • Просмотр профиля
Re: Нужна подсказка по командной строке
« Ответ #11 : 16 Марта 2009, 12:03:53 »
Все, спасибо. Не так уж много работы было - сделал все руками, но сравнил через diff
OpenSUSE 11.3 x86-64

 

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