Vous pouvez trouver un ensemble complet de solutions à ce sujet dans la réponse d'UNIX et Linux à Comment déplacer tous les fichiers (y compris cachés) d'un répertoire à un autre? . Il montre des solutions dans Bash, zsh, ksh93, standard (POSIX) sh, etc.
Vous pouvez utiliser ces deux commandes ensemble:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
Ou tous ensemble ( merci pfnuesel ):
mv /path/subfolder/{.,}* /path/
Qui s'étend à:
mv /path/subfolder/* /path/subfolder/.* /path/
(exemple: se echo a{.,}b
développe en a.b ab
)
Notez que cela affichera quelques avertissements:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
Ignorez-les simplement: cela se produit parce que /path/subfolder/{.,}*
se développe également vers /path/subfolder/.
et /path/subfolder/..
, qui sont le répertoire et le répertoire parent (voir Que signifient «.» Et «..» dans un dossier? ).
Si vous souhaitez simplement copier, vous pouvez utiliser un simple:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
Cela copiera tous les fichiers, normaux et cachés, car se /path/subfolder/.
développe en "tout de ce répertoire" (Source: Comment copier avec cp pour inclure les fichiers cachés et les répertoires cachés et leur contenu? )
cp -r /path/to/source/. /destination