Je veux find tous les files dans dir1
ayant les mêmes noms de files dans dir2
, et les replace par les files de dir2
.
Par exemple:
dir1: first.txt second.txt dir2: third.txt first.txt
Donc, je veux supprimer de dir1
l'ancien file first.txt
et le replace par first.txt
partir de first.txt
.
Comment réaliser cela en utilisant le terminal Bash?
En fait, il y a une seule command qui fait exactement ce que vous requestz.
rsync -av --existing dir2/ dir1/
Cela copyra récursivement les files de dir2 dans dir1 uniquement si le file existe déjà dans dir1.
Les options -av
sont les options que vous utiliserez habituellement pour copyr des files en utilisant rsync.
L'option --existing
indique à rsync
d'ignorer la création de nouveaux files sur le récepteur.
Vous devez avoir la barre oblique sur dir2 / sur la command line car rsync
se comporte différemment que la plupart des commands dans la barre oblique a une signification pour rsync.
rsync
peut également être utilisé sur le réseau similaire à scp
.
rsync
peut gérer de nombreux autres types de tâches de synchronisation, de mise à jour et de sauvegarde de files.
rsync peut le faire avec l'option --existing
:
rsync -v --existing dir2/* dir1/