С папкой, названной 'myfolder' и одним уровнем в файловой иерархии (точка Вы хотите, чтобы это поместило), команда была бы:
mv myfolder/* .
Так, например, если данные были в /home/myuser/myfolder
затем от /home/myuser/
выполните команду.
Для тех из вас, кто находится на сервере с общим доступом, необходимо использовать нечто подобное
Для перемещения файлов
mv -v ~/public_html/public_html/* ~/public_html/
Для копирования файлов
cp -a ~/public_html/* ~/public_html/* ~/public_html/
просто выдайте команду mv
mv (directory)/* .
, если вы хотите удалить каталог, то добавьте
rm -rf (directory)
Предполагается, что вы находитесь в родительском каталоге (каталога)
Если вы находитесь внутри (каталога), то
mv * ../
Это можно сделать следующими методами:
используя rsync
:
rsync -vua --delete-after foo/ .
используя cp
и rmdir
:
cp -vaR foo/. . && rmdir foo/
используя mv
(с включенной опцией dotglob
):
shopt -s dotglob # Включает имена файлов, начинающиеся с точки.
mv -- foo/* . # Где foo/ - папка, состоящая из файлов.
shopt -u dotglob # Отключает ранее включенную опцию dotglob.
где foo/
- папка, содержимое которой должно быть перемещено на один уровень вверх.
Смотрите: help shopt
и man bash
.
Используя mv
(как предлагалось здесь ):
mv foo/* foo/.[^.]* . && rmdir foo/ .
Примечание: Он пропустит файл под названием foo/...bar...
.
Примечание: Для оболочек POSIX нужно [!]
.
Чтобы прояснить ситуацию, взято из ответа Руду выше и комментариев.
Если вам нужно переместить все содержимое, ВКЛЮЧАЯ файлы, начинающиеся с. (например, .htaccess, .git и т. д.), вам необходимо включить в свою команду как *, так и. *. Примерно так:
mv subfolder/* subfolder/.* .
Это переместит содержимое подпапки в вашу текущую папку. Обратите внимание на пробел перед последним «.».
Я думаю, что лучший ответ:
mv myfolder/mysubfolder.
Иногда возникает проблема, связанная с тем, что обе папки имеют одинаковое имя
mv myfolder myfolder.old
mv myfolder.old/myfolder.
rmdir myfolder.old
В вопросе не указано, какой шелл, поэтому вот вариант zsh :
mv myfolder/*(D).
(D)
обеспечивает включение как точечных, так и не -точечных файлов, но, что особенно важно, не включает объекты .
и ..
. Это эквивалентно решению dotglob от kenorb.
.*
не просто*
если архив содержал точечные файлы. Также добавьте '&& rmdir myfolder' в конец o что удалить теперь постороннюю папку. Это - сохранение, потому что оно будет только работать, если mv возвратит успех И потому что rmdir не удалит непустой каталог. – Caleb 24.08.2011, 23:53.*
. Удаление исходной папки и тривиально и не попросившее относительно того, таким образом, мы позволим OP иметь дело с этим самостоятельно. – Rudu 24.08.2011, 23:57*
и.*
в одной строке? просто любопытство – Richard 13.11.2012, 22:40mv
все будут источники кроме ПОСЛЕДНЕГО аргумента, который должен быть целью для перемещения (и в случае многочисленных источников, должна быть папка). – Caleb 13.11.2012, 22:50/bin/mv: Argument list too long
– dragosrsupercool 17.11.2014, 09:46