Команда mv не перемещает с перезаписью поверх папки, если таковые уже существуют, поэтому часто вместо нее используют команду копирования cp:

yes | cp -rf source/example/* destination/example/

Yes приходится использовать так как команда cp во многих версия Linux уже является алиасом для интерактивной команды  alias cp='cp -i'  и потому игнорирует ключ -f и все равно спрашивает подтверждение перезаписи на каждом файле. Это весьма долгая процедура для большого числа маленьких файлов.

Второй минус такого подхода — требуется больше места при копировании, чем при перемещении — иногда это может сыграть роль.

Поэтому для перемещения файлов в папках и подпапках вне зависимости от их текущего присутствия я рекомендую использовать другую команду rsync:

rsync -avrh --remove-source-files ./source/folder/ /destination/folder/

Комментарии:

  • путь к папкам в rsync должен заканчиваться /
  • Если место назначения еще не существует, rsync автоматически его создаст.
  • Исходные файлы будут удалены при успешной синхронизации.

Ключи:

  • -a: режим архива, позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права владения пользователей и групп и временные метки.
  • -v: подробный вывод.
  • -r: рекурсивно копирует данные (но не сохраняет временные метки и разрешения при передаче данных).
  • -z: сжатие данных файла.
  • -h: human-readable, информация на выводе в формате, удобном для чтения.
[Посещений: 1 058, из них сегодня: 1]
Опубликовано в LinuxПомечено

Добавить комментарий