Как переместить подпапку с содержимым в другую исходную папку без копирования?

Как переместить подпапку с содержимым в другую исходную папку без копирования?

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

Вот структура каталога:

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, я полагаю.

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