Déplacer le contenu du dossier dans le dossier parent - Linux Commandline


18

J'ai un dossierA qui contient le dossierB qui contient beaucoup de fichiers. Je voudrais me débarrasser du dossier B, mais pas de son contenu. Je veux que ce contenu soit dans le dossier A. Comment puis-je accomplir cela sur la ligne de commande?

Réponses:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
dossier mVB / *. ? quel est le point?
NewLinuxUser

8
Attention aux fichiers de points (fichiers dont le nom commence par.) Car cela ne les inclura pas. Faites mv folderB/.* .pour les déplacer aussi. @NewLinuxUser, le point dans votre question est un alias pour le répertoire de travail (dans ce cas, le dossier A).
Brian

1
Cela échoue s'il folderB/folderBexiste, alors méfiez-vous de l'utiliser dans des scripts.
filipos

1
Cela échoue également si folderBcontient une quantité insensée de fichiers. Vous verrez à bash: /bin/mv: Argument list too longcause de l'utilisation de *. Si tel est le cas, utiliser mven combinaison avec findcomme indiqué par @amphetamachine, ou avec unfor loop
Javier de la Rosa

2

Réponse rapide:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Réponse résistante au code:

cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.