Я пробовал это раньше. Я клянусь, что смог выдать такую команду раньше:
mv /home/user/temp1/* /home/user/temp2
По сути, я получил эту команду отсюда: https://superuser.com/questions/273254/move-files- and-folder-recursively-in-linux
Любая идея, почему она говорит мне
mv: cannot stat `/home/user/temp1/*': No such file or directory
Я могу думать о 2 возможных причинах, почему это может произойти:
Проигнорируйте если ни один!
Вам нужно использовать $USER
для пользователя, чтобы расширить до вашего имени пользователя. /home/user
действителен, только если у вас есть пользователь с именем user
. Это будет работать, если в вашем домашнем каталоге есть temp1
и temp2
mv /home/$USER/temp1/* /home/$USER/temp2
Я постараюсь помочь и немного устранить путаницу:
Если вы хотите переместить папку и ее содержимое в другую, вы вводите:
mv ~/Scripts ~/Podcasts
Если вы хотите переместить содержимое папки, но не сама папка в другую папку, вы должны ввести например, mv ~/Scripts/* ~/Podcasts
. Вы можете ввести echo ~/Scripts/*
, чтобы проверить содержимое папки
(Если вам также необходимо знать о globstar
, которое позволит вам просматривать все уровни каталогов, см. эта статья и эта . Она может быть включена с shopt -s globstar, но ее нужно будет поместить в .bashrc для постоянной работы.)
tilde
~ в ~ / Scripts расширяется до /home/mike/
или вашего имени пользователя автоматически с помощью оболочки)
Если вы используете bash, а исходный каталог пуст, вы можете изменить поведение расширения по умолчанию для оболочки: вести себя правильно, когда исходный каталог пуст. Помните, что это может привести к неожиданному поведению других команд, таких как ls
.
Вы можете снова отключить нуль-глобус с помощью:
shopt -u nullglob
Для получения дополнительной информации смотрите здесь и здесь .