Cách thay thế tất cả nội dung từ một thư mục bằng một thư mục khác


23

Tôi có thư mục oldnew.

Tôi muốn thay thế tất cả các nội dung trong old/*để new/*. Có thể có nhiều thư mục con trong các thư mục đó.

Nhưng có thể có một vài tệp không nằm trong new/*nhưng nằm trong old/*, vì vậy tôi muốn chúng giữ nguyên như cũ.

Làm thế nào tôi có thể làm điều đó từ một vỏ Linux?

Câu trả lời:


18

rsync có lẽ sẽ là một lựa chọn tốt hơn ở đây. Nó đơn giản như rsync -a subir / ./. kiểm tra câu trả lời unix.stackexchage này để có giải pháp tốt hơn

sử dụng -fvới cplệnh

cp -fR /source/files /dest

ngăn chặn cp để ghi đè "nhắc nhở ..

Để ghi đè bí danh của cp, bạn chỉ cần đặt nó trong dấu ngoặc kép:

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

để biết thêm thông tin theo các liên kết sau:

http://www.wallapersama.com/forums/cp-command-probols-forcing-overwrite-USE-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-ex hiện-directory


23

Sử dụng rsync. Nó sẽ đồng bộ hóa các thư mục theo một hướng. Vì vậy, nếu bạn muốn cập nhật oldthư mục của mình với mọi thứ từ đó new, nhưng hãy giữ những gì trong đó, chỉ cần sử dụng:

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

Điều này sẽ, trong trường hợp đầu tiên, chỉ xuất ra danh sách các tệp sẽ được chuyển. Trong trường hợp đó: Mọi thứ tìm thấy newsẽ được sao chép vào old, trừ khi nó đã ở đó. Tất cả mọi thứ ở oldlại như nó là.

Nếu nó có vẻ tốt với bạn, hãy loại bỏ --dry-runđối số để truyền tải chúng thực sự.

Các -avhcờ chỉ kích hoạt chế độ lưu trữ (sẽ bảo toàn dấu thời gian, v.v.), độ dài và kích thước tệp có thể đọc được của con người. Không có gì sẽ bị xóa khỏi đích trừ khi bạn chỉ định --deletecờ. Tư vấn man rsyncđể biết thêm thông tin.

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.