Réponses:
Avec le dossier appelé 'myfolder' et un niveau supérieur dans la hiérarchie des fichiers (le point que vous voulez placer), la commande serait:
mv myfolder/* .
Ainsi , par exemple si les données était /home/myuser/myfolderalors de /home/myuser/lancer la commande.
.*. Supprimer le dossier original est à la fois trivial et non demandé, nous allons donc laisser OP s'occuper de cela lui-même.
*et .*sur une ligne? rien que de la curiosité
mvseront tous des sources sauf l'argument LAST qui doit être la cible du déplacement (et dans le cas de plusieurs sources, il doit s'agir d'un dossier).
/bin/mv: Argument list too long
Pour que tout soit clair, tiré de la réponse de Rudu ci-dessus et des commentaires.
Si vous devez déplacer tout le contenu, INCLUANT les fichiers qui commencent par un. (comme .htaccess, .git, etc.), vous devez inclure à la fois * et. * dans votre commande. Ainsi:
mv subfolder/* subfolder/.* .
Cela déplacera le contenu du sous-dossier dans votre dossier actuel. Notez l'espace avant le dernier ".".
mv: rename fake/. to ./.: Invalid argumentetmv: rename fake/.. to ./..: Invalid argument
Ceci est possible avec les méthodes suivantes:
Utilisant rsync:
rsync -vua --delete-after foo/ .Utiliser cpet rmdir:
cp -vaR foo/. . && rmdir foo/Utiliser mv(avec l' dotgloboption activée):
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.
où foo/est votre dossier dont le contenu doit être déplacé d'un niveau supérieur.
Voir: help shoptet man bash.
Utilisation mv(comme suggéré ici ):
mv foo/* foo/.[^.]* . && rmdir foo/
Remarque: il manquerait un fichier appelé foo/..bar...
Remarque: Pour les shells POSIX, vous avez besoin de [!.].
-v, -u, -aet -rfaire? AFAICT, -vest commenté, ce qui fait que rsync imprime plus d'informations. -usignifie mettre à jour - ne copiez un fichier que s'il est plus récent. Cela ne semble pas pertinent. -asignifie archives. Cela copiera le propriétaire et les autorisations du fichier et rendra la synchronisation récursive. -rsignifie récursif, mais c'est déjà couvert par -a.
-uest utile lorsque vous ne voulez pas passer plus de temps à déplacer des données déjà présentes (en particulier pour les périphériques de stockage lents). J'ai enlevé -r, car c'est couvert par -acomme vous l'avez mentionné.
mv foo/* foo/.[^.]* .manquerait un fichier appelé foo/..bar..par exemple. Notez que pour les shells POSIX, il vous faut [!.].
rsync -vua --delete-after foo/ .supprime tout ce qui pourrait déjà exister dans le répertoire en cours.
il suffit d'émettre une commande mv
mv (directory)/* .
si vous voulez supprimer le répertoire puis ajoutez
rm -rf (directory)
Supposé que vous êtes dans un répertoire parent de (répertoire)
Si vous êtes dans le (répertoire) alors
mv * ../
.DS_storedans macOS. La mvcommande ci-dessus ne déplacera pas ceux-ci (sans dotglobset).
pour ceux d'entre vous sur un serveur partagé, vous devriez utiliser quelque chose comme ça
Déplacer les fichiers
mv -v ~/public_html/public_html/* ~/public_html/
Copier les fichiers
cp -a ~/public_html/public_html/* ~/public_html/
.*non seulement*si l'archive contient des fichiers de points. Ajoutez également `&& rmdir myfolder` à la fin pour supprimer le dossier désormais inutile. Ceci est sauvegardé car il ne sera exécuté que si le fichier mv renvoie succès ET car rmdir ne supprimera pas un répertoire non vide.