Respostas:
Com a pasta chamada 'myfolder' e subindo um nível na hierarquia de arquivos (o ponto que você deseja colocar) o comando seria:
mv myfolder/* .
Por exemplo, se os dados estavam /home/myuser/myfolderlá, /home/myuser/execute o comando
.*. A remoção da pasta original é trivial e não solicitada; portanto, vamos deixar o OP lidar com isso.
*e .*em uma linha? apenas curiosidade
mvserão fontes, exceto o argumento LAST, que precisa ser o destino para a movimentação (e, no caso de várias fontes, precisa ser uma pasta).
/bin/mv: Argument list too long
Apenas para deixar claro, tirado da resposta de Rudu acima e dos comentários.
Se você precisar mover todo o conteúdo, INCLUINDO arquivos que começam com a. (como .htaccess, .git, etc), você precisa incluir * e. * em seu comando. Igual a:
mv subfolder/* subfolder/.* .
Isso moverá o conteúdo da subpasta para a pasta atual. Observe o espaço antes do último ".".
mv: rename fake/. to ./.: Invalid argumentemv: rename fake/.. to ./..: Invalid argument
Isso é possível com os seguintes métodos:
Usando rsync:
rsync -vua --delete-after foo/ .Usando cpe rmdir:
cp -vaR foo/. . && rmdir foo/Usando mv(com a dotglobopção ativada):
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.
onde foo/está sua pasta cujo conteúdo deve ser movido um nível acima.
Veja: help shopte man bash.
Usando mv(como sugerido aqui ):
mv foo/* foo/.[^.]* . && rmdir foo/
Nota: Faltaria um arquivo chamado foo/..bar...
Nota: Para shells POSIX, você precisa [!.].
-v, -u, -ae -rfazendo? AFAICT, -vé detalhado, o que apenas faz com que o rsync imprima mais informações. -usignifica atualização - apenas copie um arquivo se for mais novo. Isso não parece relevante. -asignifica arquivo. Isso copiará o proprietário e as permissões do arquivo e tornará a sincronização recursiva. -rsignifica recursivo, mas isso já está coberto -a.
-ué útil quando você não deseja gastar tempo extra movendo dados que já existem (especialmente para dispositivos de armazenamento lento). Eu removi -r, já que é coberto -acomo você mencionou.
mv foo/* foo/.[^.]* .perderia um arquivo chamado, foo/..bar..por exemplo. Observe que, para shells POSIX, você precisa [!.].
rsync -vua --delete-after foo/ .exclui tudo o que já existe no diretório atual.
basta emitir um comando mv
mv (directory)/* .
Se você deseja excluir o diretório, adicione
rm -rf (directory)
Supondo que você esteja em um diretório pai de (diretório)
Se você estiver dentro do (diretório), então
mv * ../
.DS_storeno macOS. O mvcomando acima não os moverá (sem dotglobconjunto).
para aqueles de vocês em um servidor compartilhado, você teria que usar algo assim
Para mover os arquivos
mv -v ~/public_html/public_html/* ~/public_html/
Para copiar os arquivos
cp -a ~/public_html/public_html/* ~/public_html/
.*não apenas*se o arquivo continha arquivos de ponto. Adicione também `&& rmdir myfolder` ao final para remover a pasta agora estranha. Isso é salvo porque será executado apenas se o mv retornar com êxito E porque o rmdir não removerá um diretório não vazio.