web-dev-qa-db-fra.com

Déplacer le contenu d'un dossier d'un niveau

J'ai un répertoire qui est décompressé, mais qui se trouve dans un dossier. Comment puis-je déplacer le contenu d'un niveau? J'accède à CentOS via SSH.

143
whatshakin

Avec le dossier appelé "mon dossier" et en haut d'un niveau dans la hiérarchie des fichiers (le point que vous voulez qu'il mette), la commande serait:

mv myfolder/* .

Par exemple, si les données étaient dans /home/myuser/myfolder puis de /home/myuser/ exécutez la commande.

212
Rudu

Juste pour être clair, tiré de la réponse de Rudu ci-dessus et des commentaires.

Si vous devez déplacer tout le contenu, Y COMPRIS les fichiers commençant par a. (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 vers votre dossier actuel. Notez l'espace avant le dernier ".".

29
Richard

Cela est possible avec les méthodes suivantes:

  • Utilisation de rsync:

    rsync -vua --delete-after foo/ .
    
  • Utilisation de cp et rmdir:

    cp -vaR foo/. . && rmdir foo/
    
  • Utilisation de mv (avec l'option dotglob 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.
    

    foo/ est votre dossier dont le contenu doit être déplacé d'un niveau vers le haut.

    Voir: help shopt et man bash.

  • En utilisant 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 [!.].

16
kenorb

émettez simplement une commande mv

mv (directory)/* .

si vous voulez supprimer le répertoire, ajoutez

rm -rf (directory)

Supposons que vous êtes dans un répertoire parent de (répertoire)

Si vous êtes dans le (répertoire),

mv * ../
7
Ranjith Siji

j'ai une commande de main courte

cp */* .

cela copiera tout le contenu des sous-dossiers au niveau supérieur, bien sûr, vous pouvez utiliser déplacer

mv */* .

ou attribuer une nouvelle disténation

cp */* /destination 
1
Mohammed Omer

pour ceux d'entre vous sur un serveur partagé, vous devez utiliser quelque chose comme ça

Pour déplacer les fichiers

mv -v ~/public_html/public_html/* ~/public_html/

Pour copier les fichiers

cp -a ~/public_html/public_html/* ~/public_html/

0
Ricardo Havoc