Copier un dossier sans écraser les fichiers existants

Galdon

Membre confirmé
29 Juillet 2008
38
0
www.finalclap.com
Bonjour, ce que j'ai à demander est assez compliqué à expliquer, donc je vais prendre un petit exemple.

J'ai quelques dossiers et fichiers organisés comme ceci (les dossiers sont en gras) :

Dossier 1
__ images
____ phone.jpg
__ fichier.txt

images
__ logo_facebook.jpg

Si je fait glisser déposer le dossier images dans Dossier 1/images, Mac OS va supprimer tout le contenu de Dossier 1/images et le remplacer par le contenu de images.

Voici le résultat :

Dossier 1
__ images
____ logo_facebook.jpg
__ fichier.txt

Moi ce que je voudrais c’est qu’il se contente de compléter le dossier, d’ajouter ce qui manque sans tout écraser. Et ça windows le fait très bien.

Je voudrais que ça fasse ça :

Dossier 1
__ images
____ phone.jpg
____ logo_facebook.jpg
__ fichier.txt

Merci

PS : Pour ceux qui trouvent ma question stupide, je veux cette fonctionnalité pour installer des pack de langue pour TinyMCE, un petit éditeur de traitement de texte en Javascript.

Il y a des tonnes de dossier et si je dois tout déplacer un par un j'ai pas fini !
 
Ta question n'est pas stupide [elle est certainement influencée aussi par une expérience informatique précédente ...]
Avec le Finder, ce ne sera pas possible. Il te faut trouver une autre application (PathFinder ? RageExplorer ?), ou écrire un script (en AppleScript, Automator ou alors à la dure, en bash, Perl, Ruby, Python, tous langages disponibles sur la machine).
 
Ok, y'aurais pas moyen de faire ça en ligne de commande, vu que OS X est basé UNIX ?

Si oui, quelqu'un pourrait m'indiquer la commande à taper, avec tous les argument qui vont bien ? (j'ai jamais été pote avec la ligne de commande, le manuel UNIX ça pique les yeux...)
 
Ça, c'est l'option "dure" ;) [ah! bash et ses plaisirs]
Tu pourrais essayer en AppleScript ?

Si vraiment les dossiers concernés sont tous nommés de la même manière, une commande find pourrait suffire. Un truc du genre :
Bloc de code:
find mon_dossier_de_depart -name "nom_dossier" -type d -exec mv {}/* mon_dossier_destination \;
 
Bonjour, ce que j'ai à demander est assez compliqué à expliquer, donc je vais prendre un petit exemple.

J'ai quelques dossiers et fichiers organisés comme ceci (les dossiers sont en gras) :



Si je fait glisser déposer le dossier images dans Dossier 1/images, Mac OS va supprimer tout le contenu de Dossier 1/images et le remplacer par le contenu de images.

Voici le résultat :

Moi ce que je voudrais c’est qu’il se contente de compléter le dossier, d’ajouter ce qui manque sans tout écraser. Et ça windows le fait très bien.

Je voudrais que ça fasse ça :

Merci

PS : Pour ceux qui trouvent ma question stupide, je veux cette fonctionnalité pour installer des pack de langue pour TinyMCE, un petit éditeur de traitement de texte en Javascript.

Il y a des tonnes de dossier et si je dois tout déplacer un par un j'ai pas fini !
Bonjour

Si tu réfléchit, avec Mac OS X les doublons en noms ne sont pas acceptés.

Un nom existant, et obligatoirement remplacé par le nouveau.

Suivant ta demande, c'est ajouter le contenu du dossier et non le dossier (une gestion des doublons à faire sinon remplacement comme pour les noms de dossier).

Un fichier nommé X (n'est pas obligatoirement porno), et un autre fichier nommé X et totalement différent (tu as eu la flemme de lui donner un nom long, c'est un test) alors c'est la bagarre et c'est toujours le dernier qui est victorieux. :siffle:

@+
 
Bonjour

En ce qui me concerne, j'utilise la commande « rsync », qui est d'un usage beaucoup plus simple à condition de faire attention. À la base c'est une commande permettant de faire la mise à jour de dossiers à distance (backup).

La syntaxe peut être :
Bloc de code:
[I][COLOR="DarkRed"]rsync -r[/COLOR][/I] [COLOR="SeaGreen"]dossier_de_départ[/COLOR] [COLOR="Teal"]dossier_de_destination[/COLOR]
(où l'option r permet de parcourir récursivement le contenu des sous-dossiers du dossier de départ), ou encore, si l'on souhaite conserver la date et l'heure d'origine des fichiers :
Bloc de code:
[I][COLOR="DarkRed"]rsync -rt[/COLOR][/I] [COLOR="SeaGreen"]dossier_de_départ[/COLOR] [COLOR="Teal"]dossier_de_destination[/COLOR]

Attention toutefois. Ici, si le chemin du dossier d'origine ne se terminer par un slash (« / »), c'est tout le dossier qui est copié dans le dossier de destination. Si le slash est présent, c'est uniquement le contenu du dossier qui est copié.

Par exemple, admettons qu'on soit dans la situation suivante:

--- Dossier_A
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_1
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨|¨¨¨|
¨¨¨¨¨|¨¨¨+- Fichier_2
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_D
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_3


--- Dossier_B
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_4
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_5


La commande « rsync -r .../Dossier_A/ .../Dossier_B/ » (avec le slash) donnera :

--- Dossier_B
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_1
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_4
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨|¨¨¨|
¨¨¨¨¨|¨¨¨+- Fichier_2
¨¨¨¨¨|¨¨¨|
¨¨¨¨¨|¨¨¨+- Fichier_5
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_D
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_3


Alors que la commande « rsync -r .../Dossier_A .../Dossier_B/ » (sans le slash) donnera :

--- Dossier_B
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_4
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨|¨¨¨|
¨¨¨¨¨|¨¨¨+- Fichier_5
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_A
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_1
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Dossier_C
¨¨¨¨¨¨¨¨¨|¨¨¨|
¨¨¨¨¨¨¨¨¨|¨¨¨+- Fichier_2
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Dossier_D
¨¨¨¨¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨¨¨¨¨+- Fichier_3


---------- Nouveau message ajouté à 16h12 ---------- Le message précédent a été envoyé à 15h25 ----------

Ta question n'est pas stupide [elle est certainement influencée aussi par une expérience informatique précédente ...]
Effectivement. Cette histoire de copie de dossiers, dont le comportement n'est pas le même sous Mac OS et sous Windows, est assez déroutante.

Même si de prime abord ce n'est pas évident pour un switcheur, l'approche choisie par Apple sur cette question n'est pas sans fondement, et se défend assez bien à condition de s'y tenir.

Les dossiers, avec tout ce qu'ils contiennent, sont considérés comme des entités uniques. Et de fait, ils sont déjà exploités en tant que tel par le système (les applications et la plupart des projets créés par celles-ci, qui sont en fait des dossiers, en sont de bons exemples).

Un tel point de vue se justifie notamment par le fait que l'organisation des fichiers, ainsi que de nombreux attributs qui leur sont rattachés (icônes, dates, autorisations) s'appuient sur le dossier qui les contient. Copier un dossier de cette manière permet de toujours conserver la même cohérence, sans polluer le contenu.

Comme la copie d'un fichier vers un dossier contenant un fichier portant le même nom se résout par la suppression de ce dernier et non par une concaténation, il paraît aussi plus pertinent d'agir de même dans le cas d'un dossier. Cela paraît encore plus flagrant si l'on considère qu'on a affaire à un répertoire (directory en anglais), qui était encore la dénomination consacrée il y a quelques années.

Bien entendu, on peut parfois avoir besoin de rajouter rapidement le contenu d'un dossier à un autre. Mais du fait des conflits que cela peut d'induire (présence d'un fichier avec le même nom dans un sous-dossier existant, par exemple), il est malvenu que cela puisse être réalisé hors du contrôle de l'utilisateur. Dans ce cas il convient d'adopter des commandes ou des applications particulières, appliquant en cas de conflit des règles déterminées, paramétrables ou interactives, et mais dont la simplicité serait moindre par rapport au « glisser-lâcher » du Finder tel que l'a choisi Apple.
 
Bonjour

Après la réponse de bompi que je trouve bien expliqué je ne trouve plus rien à dire.

Je ne suis pas le demandeur, puis-je vous dire merci pour la clartés de vos explications.

Cordialement :up::up::up:

@+