Quand j'utilise
cp -R inputFolder outputFolder
le résultat dépend du contexte :
- s'il
outputFoldern'existe pas, il sera créé et le chemin du dossier cloné seraoutputFolder. - s'il
outputFolderexiste, le clone créé seraoutputFolder/inputFolder
C'est horrible , car je veux créer un script d'installation. Si l'utilisateur l'exécute deux fois par erreur, il l'aura outputFoldercréé la première fois. À la deuxième exécution, tous les éléments seront créés à nouveau outputFolder/inputFolder.
- Je veux toujours le premier comportement: créer un clone à côté de l'original (en tant que frère ou soeur).
- Je veux utiliser
cppour être portable (par exemple, MINGW n'a pas étérsyncexpédié) - J'ai vérifié
cp -R --parentsmais cela recrée le chemin jusqu'au bout de l'arborescence (donc le clone ne sera pasoutputFoldermaissome/path/outputFolder) --remove-destinationou si le--updatecas 2 ne change rien, les choses sont encore copiées dansoutputFolder/inputFolder
Est-il possible de le faire sans d'abord vérifier l'existence du outputFolder(si le dossier n'existe pas alors ...) ou en utilisant rm -rf outputFolder?
Quel est le moyen UNIX convenu et portable de faire cela?
rsync?
cp, la canalisation entre deux tarcommandes est un moyen fiable et agréable de copier des arbres.
rsyncexpédié.
tar -C input -cf - . | tar -C output -xf -marche. -Cmodifie le répertoire de travail, mais ce n’est pas une option standard, donc s’il n’est pas pris en charge, vous devez commencer par exécuter les deux ( cd input && tar -cf - . ) | ( cd output && tar -xf - )fichiers tar dans les répertoires de travail appropriés. Par exemple, si vous utilisez Windows, je n’utiliserai que la réponse de roaima.
mvde déplacer une collection de fichiers dans un seul fichier ordinaire?