Você pode encontrar um conjunto abrangente de soluções para isso na resposta do UNIX e Linux para Como você move todos os arquivos (incluindo os ocultos) de um diretório para outro? . Ele mostra soluções em Bash, zsh, ksh93, padrão (POSIX) sh, etc.
Você pode usar esses dois comandos juntos:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
Ou todos juntos ( obrigado pfnuesel ):
mv /path/subfolder/{.,}* /path/
Que se expande para:
mv /path/subfolder/* /path/subfolder/.* /path/
(exemplo: echo a{.,}b
expande para a.b ab
)
Observe que isso mostrará alguns avisos:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
Basta ignorá-los: isso acontece porque /path/subfolder/{.,}*
também se expande para /path/subfolder/.
e /path/subfolder/..
, que são o diretório e o diretório pai (consulte O que significam “.” E “..” quando em uma pasta? ).
Se você quiser apenas copiar, você pode usar um mero:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
Isso irá copiar todos os arquivos, normais e ocultos, desde que se /path/subfolder/.
expanda para "tudo deste diretório" (Fonte: Como copiar com cp para incluir arquivos ocultos e diretórios ocultos e seus conteúdos? )
cp -r /path/to/source/. /destination