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/myfolder
lá, /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
mv
serã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 argument
emv: rename fake/.. to ./..: Invalid argument
Isso é possível com os seguintes métodos:
Usando rsync
:
rsync -vua --delete-after foo/ .
Usando cp
e rmdir
:
cp -vaR foo/. . && rmdir foo/
Usando mv
(com a dotglob
opçã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 shopt
e 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
, -a
e -r
fazendo? AFAICT, -v
é detalhado, o que apenas faz com que o rsync imprima mais informações. -u
significa atualização - apenas copie um arquivo se for mais novo. Isso não parece relevante. -a
significa arquivo. Isso copiará o proprietário e as permissões do arquivo e tornará a sincronização recursiva. -r
significa 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 -a
como 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_store
no macOS. O mv
comando acima não os moverá (sem dotglob
conjunto).
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.