Я пытаюсь переместить все файлы в текущем каталоге в каталог GuardDog-CMS. Теперь все файлы фактически идентичны, но файлы в текущем каталоге более современны. Поэтому, когда я делаю переезд, я также хочу убедиться, что он не подсказывает мне «файл уже существует» или что-то в этом роде. Поэтому я пробую следующее:
~/Documents/github/GuardDog-CMS-TEMP/guarddog //current directory
~/Documents/github/GuardDog-CMS //destination directory
mv -v . ../../GuardDog-CMS
Но это дает мне эту ошибку:
mv: rename . to ../../GuardDog-CMS/.: Invalid argument
Вы получаете неверный аргумент, потому что вы использовали точку (.
). Ваша команда пытается переименовать текущий каталог в ../../GuardDog-CMS
, но это невозможно, потому что в Unix-подобных системах косые черты не допускаются в именах файлов.
Используйте *
, если вы хотите переместить все из текущего каталога:
mv -v * ../../GuardDog-CMS
Если у вас есть скрытые файлы в текущем каталоге, используйте команду shopt -s dotglob nullglob
, прежде чем перемещать файлы.
См. Также: Как переместить все файлы (включая скрытые) в одном каталоге в другой?
Я понимаю, что это старый вопрос, но приведенный выше ответ неверен относительно причины проблемы.
Вы можете переименовать папку в имя с косой чертой, если это допустимый путь куда-то.
Чего вы не можете сделать, так это переименовать .
, потому что ваше текущее местоположение в оболочке становится недействительным, если вы это сделаете, и оболочка избегает создания такой ситуации.
Предложение перемещать содержимое, а не папку работает, или вы можете перейти в родительскую папку и выполнить перемещение оттуда:
cd ..
# Now we are one level up, so one less ../
mv your-original-subdirs-name ../GuardDog-CMS