Кажется, это очень простая команда. Однако даже после часа поиска решения я все еще не могу найти что-то, что работает.
Итак, у меня есть две большие папки (со многими файлами и множеством подпапок, мега-бэкап). Я хотел бы объединить эти две папки в одну папку, содержащую только новые файлы. Поэтому я ищу способ перезаписать файлы, ЕСЛИ ТОЛЬКО исходный файл новее, чем целевой файл, или когда целевой файл не существует.
Я использую Mac версии 10.7.4. Я открыт для установки нового приложения и/или использования команды терминала/bash.
Ответ 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 гласит:
Косая черта в конце источника изменяет это поведение, чтобы избежать создания дополнительного уровня каталога в месте назначения. Вы можете думать о конце / в источнике как о значении "копировать содержимое этого каталога", а не "копировать каталог по имени", ...