7

I have two folders /var/first/app and /var/second/app. I have different files within both folders and few are same. I want to merge /var/second/app to /var/first/app. How can I do that?

5
  • copy them recursively with cp -rf (it'll overwrite the target files) then remove the older directory files.
    – v_sukt
    Jun 30, 2017 at 13:01
  • Do you have same files within the same folders?
    – Ravexina
    Jun 30, 2017 at 13:02
  • 1
    @Ravexina: yes, if they are same then in similar folder structure
    – P S
    Jun 30, 2017 at 13:03
  • To get good answers, you will need to be specific about exactly what you want to happen for the "few are same" Jun 30, 2017 at 13:14
  • What do you mean "merge"? What exactly do you want to happen to files that appear in both directories with identical names? Jun 30, 2017 at 14:16

3 Answers 3

15

This should do the trick:

rsync -av /var/second/app /var/first/app
1
  • 3
    I had to use rsync -av /app/. app/. or the app directory would exist inside the first/app. As so /var/first/app/app. Perhaps because the path was not fully qualified.
    – Rots
    Jun 24, 2021 at 2:12
7

Use something like:

cp -r /var/first/app /var/second/
rm -r /var/first/app

or change cp -r to cp -a to preserve ownership and timestamps.

You can also use -i to make sure what is going on. it's going to prompt you before overwriting anything.

1
  • cp -ri first/* second Feb 25, 2022 at 4:17
0

You may first backup your destination folder (just in case) :

cp -r /var/first/app /var/first/app.backup

If you don't care overwriting files :

cp -fr /var/second/app /var/first/app

It will copy recursively the second folder into the first one, overwriting files with same names.

If you don't want to overwrite existing files :

cp -nr /var/second/app /var/first/app

If all is ok, you can remove the backup :

rm -rf /var/first/app.backup
1
  • cp -ri dir1/* dir2/ Feb 25, 2022 at 4:41

Not the answer you're looking for? Browse other questions tagged .