
Я знаю, что этот вопрос задавался миллион раз, но я не могу найти ответа на то, что конкретно я пытаюсь сделать.
Вот структура каталога:
Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000
Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
- Я хочу попытаться переместить Subfolder2 с его файлами в другой каталог.
- Я не хочу ничего копировать, а затем удалять из-за нехватки места.
- Я не хочу этого делать,
mv /Main/Sub2/* /Main2/
потому что в этом случае все будет помещено в/Main2
папку, а не в подкаталог. - Я не хочу этого делать,
mkdir /Main2/...
потому что это очень длинное имя (в основном временные метки), и я не хочу вводить его вручную (и, вероятно, все испортить). - Насколько я знаю,
rsync
он также копирует файлы, поэтому не уверен, что это сработает.
Любые предложения или другие инструменты будут высоко оценены!
решение1
Это совершенно просто.
mv /Main1/Sub2 /Main2
Это создает каталог /Main2/Sub2
со всем содержимым оригинала и удаляет каталог /Main1/Sub2
. Если вы не хотите вводить полное имя, вы можете использовать glob; просто прекратите вводить имя и закончите с , *
когда введете достаточно символов, чтобы отличить имя каталога от всего остального в каталоге (будьте осторожны!):
mv /Main/Sub* /Main2
Возможные проблемы, из-за которых это может работать не так, как ожидалось:
Внутри уже есть каталог
/Main2
с таким же именем, как/Main1/Sub2
. Это приводит к ошибкеdirectory not empty
, так какmv
отказывается перезаписывать существующий каталог. Если это так, переименуйте (или удалите) существующий каталог в/Main2
первую очередь:mv /Main2/Sub2 /Main2/SomethingElse
Использование неправильного пути. Помните, что все чувствительно к регистру, и помните об относительных путях и
~
расширении. Все они различаются в зависимости от текущего рабочего каталога/Main1/Sub2 Main1/Sub2 ~/Main1/Sub2
У вас нет разрешения на запись в исходный и/или целевой каталог. Это будет очень очевидно из сообщения об ошибке:
mv: cannot move 'thing' to '/place': Permission denied
. В этом случае вы можете выполнить мою любимую команду, чтобы преодолеть проблемуsudo !!
решение2
Понял: Использование sudo mv /Main1/Sub2 /Main2
сделало это для меня. Главное отличие в том, что я root, я полагаю.