Как удалить каталоги из источника после их копирования?

Как удалить каталоги из источника после их копирования?

Я просто хочу переместить каталоги. Я последовательно рассмотрел mv, cp и rsync, поскольку каждый инструмент, по очереди, похоже, не имел возможности удалять каталоги из источника после их копирования. Например, mv нужны файлы, а не каталоги, когда src и dst находятся на разных устройствах:

«перемещение между устройствами не удалось: src to dst; невозможно удалить цель: является каталогом»

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

решение1

Как сказал Боб. К сожалению, я не могу (пока) комментировать, поэтому мне придется разместить свои корректировки здесь. Я бы предложил использовать слегка измененную версию команды Боба:

cp -rp source-dir target-dir && rm -r source-dir;

Двойной амперсанд гарантирует, что вторая команда будет выполнена только после завершения первой.успешно-- было бы ужасно, если бы копирование по какой-то причине не удалось (например, недостаточно места на целевом томе), а исходник все равно был бы удален...

решение2

На самом деле,мвможет "перемещать" каталоги; но не может перемещаться между устройствами или файловыми системами. Он работает очень быстро, потому что все, что он делает, это переопределяет указатель файла; само содержимое не копируется.

Итак, вам нужны две команды (копировать, затем удалить). В моей системе Solaris я перемещаю каталоги с помощью этих двух команд:

cp -rp source-dir target-dir; rm -r source-dir;

Ознакомьтесь со страницами руководства, чтобы убедиться, что вы используете правильный синтаксис для своей среды и правильно обрабатываете любые символические ссылки, которые могут существовать.

Связанный контент