J'ai un répertoire qui est décompressé, mais est dans un dossier. Comment puis-je déplacer le contenu d'un niveau? J'accède à CentOS via SSH.
127
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.
.*
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..*
. 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:
Cela déplacera le contenu du sous-dossier dans votre dossier actuel. Notez l'espace avant le dernier ".".
la source
mv: rename fake/. to ./.: Invalid argument
etmv: rename fake/.. to ./..: Invalid argument
Ceci est possible avec les méthodes suivantes:
Utilisant
rsync
:Utiliser
cp
etrmdir
:Utiliser
mv
(avec l'dotglob
option activée):où
foo/
est votre dossier dont le contenu doit être déplacé d'un niveau supérieur.Voir:
help shopt
etman bash
.Utilisation
mv
(comme suggéré ici ):Remarque: il manquerait un fichier appelé
foo/..bar..
.Remarque: Pour les shells POSIX, vous avez besoin de
[!.]
.la source
-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
si vous voulez supprimer le répertoire puis ajoutez
Supposé que vous êtes dans un répertoire parent de (répertoire)
Si vous êtes dans le (répertoire) alors
la source
rmdir
plaint et se ferme si le répertoire n'est pas vide, alors qu'il l'rm -r
aurait simplement supprimé ainsi que tout son contenu. (C'est un poka-yoke .).DS_store
dans macOS. Lamv
commande ci-dessus ne déplacera pas ceux-ci (sansdotglob
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/
la source