Ответы:
С папкой myfolder и уровнем иерархии файлов на один уровень выше (точка, которую вы хотите указать), команда будет выглядеть так:
mv myfolder/* .
Так, например, если данные были в /home/myuser/myfolderто время от /home/myuser/запуска команды.
.*. Удаление оригинальной папки является тривиальным и не требуется, поэтому мы позволим OP разобраться с этим самостоятельно.
*и .*в одну строку? просто любопытство
mvбудут источниками, кроме аргумента LAST, который должен быть целью перемещения (а в случае нескольких источников должен быть папкой).
/bin/mv: Argument list too long
Просто чтобы сделать это кристально ясным, взятым из ответа Руду выше и комментариев.
Если вам нужно переместить все содержимое, включите файлы, которые начинаются с. (например, .htaccess, .git и т. д.), вам нужно включить и * и. * в вашу команду. Вот так:
mv subfolder/* subfolder/.* .
Это переместит содержимое подпапки в вашу текущую папку. Обратите внимание на пробел перед последним "."
mv: rename fake/. to ./.: Invalid argumentиmv: rename fake/.. to ./..: Invalid argument
Это возможно с помощью следующих методов:
Использование rsync:
rsync -vua --delete-after foo/ .Использование cpи rmdir:
cp -vaR foo/. . && rmdir foo/Использование mv(с dotglobвключенной опцией):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
где foo/находится ваша папка, содержимое которой нужно переместить на один уровень вверх?
Смотрите: help shoptа man bash.
Используя mv(как предложено здесь ):
mv foo/* foo/.[^.]* . && rmdir foo/
Примечание. Будет пропущен файл с именем foo/..bar...
Примечание: для оболочек POSIX вам нужно [!.].
-v, -u, -aи -rделать? AFAICT, -vмногословен, что просто заставляет rsync печатать больше информации. -uозначает обновление - копировать файл, только если он более новый. Это не кажется актуальным. -aзначит архив. Это скопирует владельца и разрешения файла и сделает синхронизацию рекурсивной. -rозначает рекурсивный, но это уже покрыто -a.
-uполезно, когда вы не хотите тратить дополнительное время на перемещение данных, которые уже есть (особенно для медленных устройств хранения). Я удалил -r, так как он покрыт, -aкак вы упомянули.
mv foo/* foo/.[^.]* .пропустит файл, который называется, foo/..bar..например. Обратите внимание, что для оболочек POSIX вам нужно [!.].
rsync -vua --delete-after foo/ .удаляет все остальное, что может уже существовать в текущем каталоге.
просто введите команду mv
mv (directory)/* .
если вы хотите удалить каталог, затем добавьте
rm -rf (directory)
Предполагается, что вы находитесь в родительском каталоге (каталог)
Если вы находитесь в (каталоге), то
mv * ../
.DS_storeв macOS. Команда mvвыше не будет перемещать их (без dotglobнабора).
для тех из вас, на общем сервере, вы должны использовать что-то вроде этого
Переместить файлы
mv -v ~/public_html/public_html/* ~/public_html/
Чтобы скопировать файлы
cp -a ~/public_html/public_html/* ~/public_html/
.*не только*если архив содержит точечные файлы. Также добавьте `&& rmdir myfolder` до конца, чтобы удалить ненужную папку. Это сохранение, потому что оно будет работать только в том случае, если mv вернет успех И потому, что rmdir не удалит непустой каталог