Sous Linux (Ubuntu), comment déplacez-vous tous les fichiers et répertoires dans le répertoire parent?
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.
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 * ../
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 *.*
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.
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.
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
Une méthode qui ne cause aucune erreur et fonctionne à chaque fois:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find -type f|while read line; do mv $line ${line##*/}; done
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.
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 *
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).