web-dev-qa-db-fra.com

Comment déplacer des fichiers et des répertoires vers le dossier parent sous Linux?

Sous Linux (Ubuntu), comment déplacez-vous tous les fichiers et répertoires dans le répertoire parent?

70
nekbaba
trouver . -maxdepth 1 -exec mv {} .. \;

cela déplacera également les fichiers cachés.

Vous recevrez le message:

mv: impossible de déplacer `. ' à «../»: périphérique ou ressource occupé

quand il essaie de déplacer . (répertoire actuel) mais que cela ne causera aucun dommage.

61
John T

Je suis venu ici parce que je suis aussi novice dans ce domaine. Pour une raison quelconque, ce qui précède n'a pas fait l'affaire pour moi. Ce que j'ai fait pour déplacer tous les fichiers d'un répertoire vers son répertoire parent était:

cd to/the/dir
mv * ../
83
Ben Fransen

Tapez ceci dans le shell:

mv *.* ..

Cela déplace TOUS les fichiers d'un niveau.

Le caractère * est un caractère générique. Donc, *.deb déplacera tous les fichiers .deb, et Zeitgeist.* déplacera Zeitgeist.avi et Zeitgeist.srt d'un dossier vers le haut, puisque, bien sûr, .. indique le répertoire parent.

Pour tout déplacer, y compris les dossiers, etc., utilisez simplement * au lieu de *.*

10
Gil

Cela ne peut pas être plus simple que:

mv * ../

Pour déplacer également les fichiers cachés:

mv /path/subfolder/{.,}* /path/ 

mv est une commande pour déplacer des fichiers, * signifie tous les fichiers et dossiers et ../ est le chemin du répertoire parent.

6
William Edwards

En bash, vous pouvez utilisershopt -s dotglob pour que * corresponde à tous les fichiers et les déplace simplement par

shopt -s dotglob; mv * ..

Ce n’est pas la meilleure solution car le paramètre est permanent pour le shell tant que vous ne le modifiez pas.

shopt -u dotglob

mais je pense que c'est bon à savoir.

2
maaartinus
find . -maxdepth 2 -type f -exec mv {} .. \;

J'ai utilisé une variante de ci-dessus pour déplacer tous les fichiers des sous-dossiers dans le parent.

J'avais des données dans des dossiers par année, mais grâce aux métadonnées, je pouvais toutes les avoir dans le même dossier, ce qui facilitait la gestion.

par exemple.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
1
Bill Bixby

Une méthode qui ne cause aucune erreur et fonctionne à chaque fois:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done
1
djhaskin987
find -type f|while read line; do mv $line ${line##*/}; done
0
Adler

En supposant que tous vos fichiers cachés commencent par un point suivi d’une lettre ou d’un chiffre (qu’ils devraient), vous pouvez utiliser

mv * .[A-Za-z0-9]* ..

La partie .[A-Za-z0-9]* consiste à s'assurer que vous n'essayez pas de déplacer . ou .., ce qui échouerait.

0
ℝaphink

Il n'est pas nécessaire de changer de répertoire. Il suffit d'inclure * à la fin du chemin:

mv /my/folder/child/* /my/folder/

Ci-dessus ne déplace que les fichiers non cachés. Pour déplacer uniquement les fichiers cachés, utilisez. *

mv /my/folder/child/.* /my/folder/

Au-dessus de deux peuvent être combinés en une seule commande:

mv /my/folder/child/{.,}* /my/folder/

Voir aussi: Comment déplacer tous les fichiers, y compris les fichiers cachés, dans le répertoire parent via *

0
Shital Shah

Il est simple de déplacer tous les fichiers et dossiers vers le répertoire parent sous Linux.

Allez dans ce dossier et utilisez cette commande:

mv * /the full path

Par exemple, si vos fichiers et dossiers sont les suivants:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

Allez dans ce dossier via cd:

cd /home/abcuser/test
mv * /home/abcuser

Tous vos fichiers et dossiers seront déplacés vers le dossier abcuser (répertoire parent).

0
Abhishek