Bezdepbonusu7Программирование: статьи и ответы

Вопрос

MAC: Как объединить папку, чтобы мы перезаписывали ее только тогда, когда исходные файлы новее, чем файлы назначения?

Автор вопроса: FleeaОтветов: 1

Кажется, это очень простая команда. Однако даже после часа поиска решения я все еще не могу найти что-то, что работает.

Итак, у меня есть две большие папки (со многими файлами и множеством подпапок, мега-бэкап). Я хотел бы объединить эти две папки в одну папку, содержащую только новые файлы. Поэтому я ищу способ перезаписать файлы, ЕСЛИ ТОЛЬКО исходный файл новее, чем целевой файл, или когда целевой файл не существует.

Я использую Mac версии 10.7.4. Я открыт для установки нового приложения и/или использования команды терминала/bash.

  • OS X 10.8 Mountain Lion делает это автоматически через графический интерфейс. Mahmoud Al-Qudsi 14.01.2013

macosbashfileoverwritebatch-processing

Ответы

Ответ 1 · рейтинг 14 · James Waldby - jwpat7

В системах Gnu используйте mv -u SOURCE DEST или cp -u SOURCE DEST для перемещения или копирования только в том случае, если файл SOURCE новее, чем файл DEST, или когда файл назначения отсутствует.

Обратите внимание, что в OS X mv и cp не поддерживает параметр -u. Однако rsync вариант -u, и он поддерживается в OS X. Например:

rsync -aru SOURCE/ DEST

Запустите несколько тестов в пустых каталогах, прежде чем применять его к большим и важным каталогам, потому что (IMO) rsync идиосинкразичен в отношении того, заканчиваются ли имена каталогов на / или без него. Часть справочной страницы Linux гласит:

Косая черта в конце источника изменяет это поведение, чтобы избежать создания дополнительного уровня каталога в месте назначения. Вы можете думать о конце / в источнике как о значении "копировать содержимое этого каталога", а не "копировать каталог по имени", ...

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы