Ответы:
С папкой 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 не удалит непустой каталог