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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Сравнение двух файлов  (Прочитано 1679 раз)

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

Liniada-Media

  • Автор темы
  • Гость
Сравнение двух файлов
« : 27 Апреля 2010, 17:54:36 »
Добрый вечер!
Хочу написать скрип по замене файла
Имеются 2 файла /home/user/dir1/file1 и /home/user/dir2/file2 и если file1 создан раньше чем file2, то заменить  file1 на file2
Подскажите, пожалуйста, как реализовать эту идею или хотя бы просто как сравнить 2 файла по дате создания?


Заранее, спасибо!

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Сравнение двух файлов
« Ответ #1 : 27 Апреля 2010, 19:57:00 »
man cp:
Цитировать
-u, --update
              copy only when the SOURCE file is newer than the destination file or when the destination file is missing

Так что
cp -u  /home/user/dir1/file1 /home/user/dir2/file2

Оффлайн CynicRus

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
Re: Сравнение двух файлов
« Ответ #2 : 27 Апреля 2010, 20:26:07 »
man bash.
"file1 operator file2"

file1 -ot file2
"Only two things are infinite, the universe and human stupidity... and I'm not sure about the universe."  -- Albert Einstein

Liniada-Media

  • Автор темы
  • Гость
Re: Сравнение двух файлов
« Ответ #3 : 28 Апреля 2010, 09:55:14 »
man cp:
Цитировать
-u, --update
              copy only when the SOURCE file is newer than the destination file or when the destination file is missing

Так что
cp -u  /home/user/dir1/file1 /home/user/dir2/file2

При этой команде он не сравнивает, а заменяет в любом случае, был ли изменен файл или нет.....
Есть способ сравнить эти файлы по дате создания/изменения?
« Последнее редактирование: 28 Апреля 2010, 10:00:37 от Liniada-Media »

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Сравнение двух файлов
« Ответ #4 : 28 Апреля 2010, 11:33:04 »
При этой команде он не сравнивает, а заменяет в любом случае, был ли изменен файл или нет.....
Есть способ сравнить эти файлы по дате создания/изменения?

Читаем мануал ещё раз и более внимательно. он заменяет "пункт назначения" только если тот создан раньше чем "источник". В противном случае он ничего не делает.

Example:
vidyuk@peti-laptop:~/Development/tests/bash$ cat old.txt
this is an old version
vidyuk@peti-laptop:~/Development/tests/bash$ cat new.txt
This is a new version
vidyuk@peti-laptop:~/Development/tests/bash$ ls -l
total 8
-rw-r--r-- 1 vidyuk vidyuk 23 2010-04-28 09:27 new.txt
-rw-r--r-- 1 vidyuk vidyuk 24 2010-04-28 09:26 old.txt
Как видим файл new.txt новее на целую минуту. Теперь делаем
vidyuk@peti-laptop:~/Development/tests/bash$ cp -u old.txt new.txt
Вскрытие показывает, что изменений нет:
vidyuk@peti-laptop:~/Development/tests/bash$ cat new.txt
This is a new version
vidyuk@peti-laptop:~/Development/tests/bash$ cat old.txt
this is an old version
А вот наоборот:
vidyuk@peti-laptop:~/Development/tests/bash$ cp -u new.txt old.txt
vidyuk@peti-laptop:~/Development/tests/bash$ cat new.txt
This is a new version
vidyuk@peti-laptop:~/Development/tests/bash$ cat old.txt
This is a new version

Одно из двух, или я не понял вопрос или вопрос сформулирован неверно :)

Liniada-Media

  • Автор темы
  • Гость
Re: Сравнение двух файлов
« Ответ #5 : 28 Апреля 2010, 12:59:36 »
Сорри, ступил......
Все работает =))))))
Спасибо большое!

 

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