Unix: Як об'єднати два каталоги


17

Скажімо, у мене є дві папки з різним вмістом, fooі bar. Як можна об'єднати barв fooтак , що:

  • Файли foo, які не знаходяться, не barстосуються.
  • Файли bar, які не fooзнаходяться, зараз у foo.
  • Файли foo, які також є в bar, були замінені файлами з bar.

Відповіді:


25

Якщо я читаю ваші вимоги правильно, немає ніяких файлів , які йдуть від fooдо bar. Схоже, ви можете просто скопіювати вміст barдо foo, дозволяючи йому перезаписувати файли за необхідності (поведінка за замовчуванням).

$ cp -R /path/to/bar/* /path/to/foo

Так, те, про що я був невпевнений, - це рекурсивність і те, як не закінчитися, якщо якраз маю бар у футі як foo / bar. Але це, здається, те, що я хочу :)
Свиш

1
Правильно, якщо ви тільки що cp -R /path/to/bar /path/to/fooце зробили, це створило б каталог barвсередині foo. Тонка точка.
конусник

1
Примітка: вона буде опускати приховані файли / каталоги в bar(тобто з іменами, що починаються з крапки - .) через те, як працює глобальна оболонка.
Каміль Маціоровський

9

У мене була дуже схожа потреба: об'єднатись barу fooфайли, у яких є, bar не повинні перезаписувати відповідні файли foo. В цьому випадку:

$ cp -R -n /path/to/bar/* /path/to/foo/

1

Спробуйте це :

$ cp -r-u-v /path/to/foo/* /path/to/bar/

З man cp
-у, --оновіть копію лише тоді, коли файл ДЖЕРЕЛА новіший за цільовим файлом або коли у файлі призначення відсутній
-R, -r, --рекурсивні каталоги копіювання рекурсивно


1
Двоє людей вже запропонували команду cp, і тому ваша відповідь здається зайвою. Виділивши кілька хвилин, щоб пояснити, як обрані вами аргументи роблять кращу роботу, ніж інші пропозиції, допоможуть зробити вашу відповідь кориснішою.
music2myear

1
Прапор -u оновлюється лише в тому випадку, якщо файл у вихідному файлі більше, ніж файл у пункті призначення. Дивіться: man cp -> -u, --оновлення: копіюйте лише тоді, коли файл SOURCE новіший, ніж цільовий файл, або коли файл відсутній,
drew7721

Додайте цю інформацію до запитання (скористайтеся редагуванням праворуч під публікацією), щоб люди могли бачити цю корисну інформацію у самій відповіді.
music2myear
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.