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?
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:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
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).
folderB/folderB
existe, alors méfiez-vous de l'utiliser dans des scripts.
folderB
contient une quantité insensée de fichiers. Vous verrez à bash: /bin/mv: Argument list too long
cause de l'utilisation de *
. Si tel est le cas, utiliser mv
en combinaison avec find
comme indiqué par @amphetamachine, ou avec unfor loop
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"