Я хочу переместить содержимое каталога в другой каталог с теми же папками.
Вот пример:
У меня ./backup
есть каталоги base
и test
. Теперь я хочу переместить эти каталоги в ./backupArchives
.
Я использую это:
mv ./backup/* ./backupArchives
но я получил ошибку
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Я пытался использовать --force
, но не повезло. Есть ли способ переместить его, когда папки уже существуют?
Примечание: я просто хочу объединить содержимое, нет перезаписи.
rsync
вместо этого, это сделает слияние.Ответы:
Хотя его
mv
справочная страница не документирует его, она откажется переименовать каталог в другой каталог, если целевой каталог содержит файлы. Это хорошо в вашем случае, потому что вы хотите объединить контент источника с целью, чтоmv
не сработает.Используйте
rsync -a backup/ backupArchives/
вместо этого. После этогоrm -rf backup/*
.Вместо того, чтобы использовать
rsync
, вы также можете сделать классическийкоторый зарабатывает вам больше очков гиков.
источник
rm -rf backupArchives
без последствий, не говоря уже о «ужасных».sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'
Быстро и грязно, если вы знаете, что делаете:
источник
После того, как каталог вы перемещаете, вам нужно
*
(представляет любой текст или число). Например:Вот и все, если вы перемещаете файлы, то вы двигаетесь как:
mv /var/www/index.php /recovery/index.php
Другой способ - упаковать содержимое этой папки с помощью tar:
Затем переместите его в любой другой файл. Также я рекомендую этот шаг, потому что tar сжимает его и делает его меньше по размеру.
Чтобы извлечь файлы в другую папку, используйте
Если вам нужно скопировать в местоположение, которое вам не принадлежит, обязательно добавьте команду к
sudo
команде после того, какой параметр вы решите использовать.источник
-R
конечно, не должно идти после первого аргумента. Параметры (почти) всегда предшествуют аргументам команды. Кроме того,mv
не имеет-R
возможности, и, наконец, рекурсия не имеет отношения кmv
. @DimitrisTheodoridis, пожалуйста, сначала проверьте свой ответ.Конечно
rsync
, работает, но это может также работать на машине, которая не поддерживаетrsync
(например, в cpanel, которая по умолчанию не установлена rsync).Как насчет использования:
Затем удалите
backup
каталог, если это необходимоПримечание 1: Вам необходимо
cd
перейти вbackup
каталог перед выполнениемcp -R --parents ...
Примечание 2: Дважды проверьте
backupArchives
каталог, если вы получили новые файлы из резервной копии.источник
Прежде чем задать вопрос, давайте рассмотрим упрощенный случай.
Предположим , что в / главная / админ у нас есть две папки
foo
иbar
которые имеют ту же структуру подкаталогов, но каждый из которых содержит различные файлы в нем. Теперь мы хотим объединить их в один. Когда мы делаем что-то вродеmv foo/* bar
,mv: directory not empty
возникает ошибка .Мое решение - отказаться от инструментов командной строки и переключиться на файловый менеджер с графическим интерфейсом, например, dolphin. При переименовании
foo
кbar
в дельфине, это дает вам возможность записывать в папку назначения, и спрашивает , нужно ли перезаписывать существующие файлы, в интерактивном режиме . Это позволяет избежать копирования и удаления, что фактически экономит ваше время без единой строки кода.PS: я не проверял каждый файловый менеджер там. Но большинство из них должно иметь эту функцию.
источник