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.