Як замінити весь вміст з однієї папки на іншу


23

У мене є папки oldі new.

Я хочу замінити весь вміст old/*на new/*. У цих папках може бути багато підкаталогів.

Але може бути небагато файлів, які не знаходяться, new/*але є old/*, тому я хочу, щоб вони залишалися такими, які є.

Як я можу це зробити з оболонки Linux?

Відповіді:


18

rsync, можливо, буде кращим варіантом тут. Це так само просто, як rsync -a subdir / ./. перевірте цю відповідь unix.stackexchage на кращі рішення

використовувати -fз cpкомандою

cp -fR /source/files /dest

придушити CP, щоб перезаписати "підказка ..

Щоб замінити псевдонім CP, ви можете просто укласти його в лапки:

 'cp' -rf ./source/* /destination/

для отримання додаткової інформації перейдіть за цими посиланнями:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory


23

Використовуйте rsync. Він синхронізує каталоги в одному напрямку. Тож, якщо ви хочете оновити свою oldпапку з усього new, але зберігайте те, що там, просто використовуйте:

rsync -avh --dry-run /path/to/new/ /path/to/old/

Це, в першу чергу, просто виведе список файлів, які будуть передані. У такому випадку: все, що знайдено, newбуде скопійовано old, якщо тільки воно вже не існує. Все oldзалишається як є.

Якщо вам це здається прекрасним, видаліть --dry-runаргумент, щоб передати їх реально.

Ці -avhпрапори просто включите архівний режим (який буде зберігати тимчасові мітки і т.д.), багатослівність і люди-читаються файли-розміри. Нічого не буде видалено з пункту призначення, якщо ви не вкажете --deleteпрапор. Зверніться man rsyncза додатковою інформацією.

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