Unix: Cách hợp nhất hai thư mục


17

Nói rằng tôi có hai thư mục với nội dung khác nhau, foobar. Làm thế nào tôi có thể hợp nhất barvào foođể:

  • Các tập tin trong foođó không barbị ảnh hưởng.
  • Các tập tin trong barđó hiện không foocó trong foo.
  • Các tập tin trong foođó cũng barđã được thay thế bởi các tập tin từ bar.

Câu trả lời:


25

Nếu tôi đọc chính xác yêu cầu của bạn, sẽ không có tệp nào được foochuyển đến bar. Có vẻ như bạn chỉ có thể sao chép nội dung của barsang foo, để nó ghi đè lên các tệp khi cần thiết (hành vi mặc định của nó).

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

Vâng, điều tôi không chắc chắn là tính đệ quy và làm thế nào để không kết thúc với việc chỉ có thanh bên trong foo là foo / bar. Nhưng đây dường như là những gì tôi muốn :)
Svish

1
Phải, nếu bạn vừa làm cp -R /path/to/bar /path/to/foonó sẽ tạo một thư mục barbên trong foo. Điểm tinh tế.
coneslayer

1
Lưu ý: nó sẽ bỏ qua các tệp / thư mục ẩn trong bar(nghĩa là với các tên bắt đầu bằng dấu chấm - .) vì cách hoạt động của shell shellbing.
Kamil Maciorowski

9

Tôi có một nhu cầu rất giống nhau: nhập barvào foonhưng các tệp bar không nên ghi đè lên các tệp phù hợp foo. Trong trường hợp này:

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

1

Thử đi :

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

Từ man cp
-u, --update chỉ sao chép khi tệp SOURCE mới hơn tệp đích hoặc khi tệp đích bị thiếu
-R, -r, - recursive thư mục sao chép đệ quy


1
Hai người đã đề xuất lệnh cp và vì vậy câu trả lời của bạn có vẻ thừa. Dành vài phút để giải thích cách các đối số bạn đã chọn thực hiện công việc tốt hơn các đề xuất khác sẽ giúp câu trả lời của bạn hữu ích hơn.
âm nhạc2myear

1
Cờ -u chỉ cập nhật nếu tệp trong nguồn mới hơn tệp ở đích. Xem: man cp -> -u, --update: chỉ sao chép khi tệp SOURCE mới hơn tệp đích hoặc khi tệp đích bị thiếu
drew7721

Thêm thông tin đó vào câu hỏi (sử dụng Chỉnh sửa ngay bên dưới bài đăng của bạn) để mọi người có thể thấy thông tin hữu ích đó trong chính câu trả lời.
âm nhạc2myear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.