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/myfolder
alors 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é
mv
seront 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 argument
etmv: rename fake/.. to ./..: Invalid argument
Ceci est possible avec les méthodes suivantes:
Utilisant rsync
:
rsync -vua --delete-after foo/ .
Utiliser cp
et rmdir
:
cp -vaR foo/. . && rmdir foo/
Utiliser mv
(avec l' dotglob
option 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 shopt
et 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
, -a
et -r
faire? AFAICT, -v
est commenté, ce qui fait que rsync imprime plus d'informations. -u
signifie mettre à jour - ne copiez un fichier que s'il est plus récent. Cela ne semble pas pertinent. -a
signifie archives. Cela copiera le propriétaire et les autorisations du fichier et rendra la synchronisation récursive. -r
signifie récursif, mais c'est déjà couvert par -a
.
-u
est 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 -a
comme 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_store
dans macOS. La mv
commande ci-dessus ne déplacera pas ceux-ci (sans dotglob
set).
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.