Hướng dẫn compare two folders and copy missing files python - so sánh hai thư mục và sao chép tệp bị thiếu python

1

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn tạo một tập lệnh Python nhỏ để kiểm tra và tổng hợp nội dung của hai thư mục và tất cả các tệp bên trong.

  • Chu kỳ thông qua cấu trúc thư mục dựa trên Folder A
  • So sánh mọi tệp từ Folder A với Folder B
  • Nếu tệp không tồn tại hoặc nội dung không giống hệt 100% thì để sao chép tệp thành Folder C nhưng trong cùng một cấu trúc thư mục như Folder ANOT 100% identical then to COPY the file to Folder C but in the same folder structure as Folder A

Bất cứ ai cũng có thể tư vấn về cách làm một kỳ tích như vậy?

Khi được hỏi ngày 6 tháng 9 năm 2015 lúc 18:24Sep 6, 2015 at 18:24

Tôi tin rằng ____10 từ

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
1 có hầu hết điều đó cho bạn: //docs.python.org/2/l Library/filecmp.html

Bạn chỉ có thể mở rộng ví dụ cơ bản trong trang này. Bằng cách sử dụng các thuộc tính

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
2,
$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
3 và
$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
4, bạn có thể dễ dàng xác định các tệp Idendical bị thiếu chứ không phải 100%.

Đã trả lời ngày 6 tháng 9 năm 2015 lúc 18:30Sep 6, 2015 at 18:30

Amitoamitoamito

4151 Huy hiệu vàng5 Huy hiệu bạc20 Huy hiệu đồng1 gold badge5 silver badges20 bronze badges

2

$ tree
.
|-- dir1
|   |-- file1
|   |-- file2
|   |-- file3
|   |-- file4
|   `-- file5
`-- dir2
    |-- file2
    |-- file4
    `-- file5

2 directories, 8 files
$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3

Điều này lặp qua tất cả các tên trong thư mục đầu tiên và đối với mỗi lần tạo tên tương ứng của một tệp dự kiến ​​sẽ tồn tại trong thư mục thứ hai. Nếu tệp đó không tồn tại, tên của nó được in.

Vòng lặp, được viết ra một cách rõ ràng hơn [và sử dụng

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
5 thay vì thay thế tham số để xóa tên thư mục khỏi tên đường dẫn của các tệp trong thư mục đầu tiên]:

for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done

Nếu các tệp trong hai thư mục không chỉ có cùng tên, mà cả nội dung giống nhau, bạn có thể sử dụng

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
6 [Lưu ý: BSD
$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
6 được sử dụng ở đây, GNU
$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
6 có thể có thể nói điều gì khác]:

$ diff dir1 dir2
Only in dir1: file1
Only in dir1: file3

Nếu nội dung tệp của các tệp có tên giống hệt nhau khác nhau, thì điều này rõ ràng sẽ xuất ra khá nhiều dữ liệu bổ sung có thể không được quan tâm.

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
9 có thể làm im lặng một chút trong trường hợp đó.

Xem thêm Hướng dẫn

$ for f1 in dir1/*; do f2="dir2/${f1#dir1/}"; [ ! -e "$f2" ] && printf '%s\n' "$f2"; done
dir2/file1
dir2/file3
6 trên hệ thống của bạn.

Để so sánh các phân cấp sâu hơn, bạn có thể muốn sử dụng

for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
1:

$ rsync -r --ignore-existing -i -n dir1/ dir2
>f+++++++++ file1
>f+++++++++ file3

Trên đây sẽ xuất một dòng cho mỗi tệp ở bất cứ đâu trong

for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
2 không có tệp tương ứng theo
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
3. Tùy chọn
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
4 [
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
5] đảm bảo rằng không có tệp nào thực sự được chuyển sang
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
3.

Tùy chọn

for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
7 [
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
8] làm cho hoạt động đệ quy và
for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
9 [
$ diff dir1 dir2
Only in dir1: file1
Only in dir1: file3
0] chọn định dạng đầu ra cụ thể [
$ diff dir1 dir2
Only in dir1: file1
Only in dir1: file3
1 và các điểm cộng cho biết tệp là một tệp mới ở đầu nhận].

Xem thêm Hướng dẫn

for f1 in dir1/*; do
    f2="dir2/$[ basename "$f1" ]"
    if [ ! -e "$f2" ]; then
        printf '%s\n' "$f2"
    fi
done
1.

bởi Milan StanojevicMilan Stanojevic

Milan đã nhiệt tình về PC kể từ những ngày thơ ấu của anh ấy, và điều này khiến anh ấy quan tâm đến tất cả các công nghệ liên quan đến PC. Trước khi tham gia WindowsReport, anh ấy đã làm việc ... Đọc thêm

Được xuất bản vào ngày 20 tháng 5 năm 2020

  • Có rất nhiều công cụ có thể giúp bạn đồng bộ hóa hoặc hợp nhất nội dung của các tệp hoặc thư mục lớn trong thiết bị của bạn.
  • Một số thậm chí hoạt động trên các thiết bị hoặc có thể so sánh nội dung giữa thư mục cục bộ và đám mây của bạn.
  • Bài viết này là một phần của một trung tâm hướng dẫn lớn hơn, nơi chúng tôi đã thu thập nhiều hướng dẫn hữu ích.
  • Ngoài ra, hãy xem phần Quản lý tệp của chúng tôi nơi bạn có thể tìm thấy nhiều bài viết về cách sắp xếp các tệp của bạn.

Xinstall bằng cách nhấp vào tệp tải xuốngINSTALL BY CLICKING THE DOWNLOAD FILE

Để khắc phục các sự cố PC khác nhau, chúng tôi khuyên dùng trình điều khiển: Phần mềm này sẽ giữ cho trình điều khiển của bạn hoạt động, do đó giữ cho bạn an toàn trước các lỗi máy tính thông thường và lỗi phần cứng. Kiểm tra tất cả các trình điều khiển của bạn ngay bây giờ trong 3 bước dễ dàng:
This software will keep your drivers up and running, thus keeping you safe from common computer errors and hardware failure. Check all your drivers now in 3 easy steps:

  1. Tải xuống DriverFix [tập tin tải xuống đã xác minh]. [verified download file].
  2. Nhấp vào Bắt đầu quét để tìm tất cả các trình điều khiển có vấn đề.Start Scan to find all problematic drivers.
  3. Nhấp vào Cập nhật trình điều khiển để nhận phiên bản mới và tránh sự cố hệ thống.Update Drivers to get new versions and avoid system malfunctionings.
  • Driverfix đã được tải xuống bởi 0 độc giả trong tháng này.0 readers this month.

Hãy nghĩ về tình huống sau: Bạn có trang web của riêng bạn và bạn muốn thực hiện một số điều chỉnh để cải thiện ngoại hình của nó. Nhưng khi làm điều này, bạn nhầm lẫn và vô tình xóa một số dòng mã.

Sau đó, khi đăng nhập tiếp theo của bạn, bạn nhận ra rằng giao diện đã bị sập và bạn chỉ nghi ngờ rằng thiếu một cái gì đó. Bạn chỉ có thể khôi phục trang web bằng cách nhập lại các dòng bị thiếu. Giá như bạn biết những gì đó là!

May mắn thay, bạn có một bản sao lưu trang web của bạn được lưu trữ trong đám mây [và có lẽ cũng là một số ổ cứng bên ngoài]. Những gì bạn cần làm bây giờ là đảm bảo bạn có thông tin chính xác trong trang web.

Vì chỉ cần sao chép/dán không nhất thiết phải thực hiện thủ thuật, nên bạn nên sử dụng một ứng dụng tốt hơn có thể giúp bạn xác định bất cứ điều gì còn thiếu.

Vì vậy, trong bài viết này, chúng tôi sẽ xem xét một vài công cụ miễn phí có thể giúp bạn so sánh nội dung và sao chép bất kỳ tệp nào bị thiếu từ vị trí này sang vị trí khác.

Làm thế nào để bạn so sánh hai thư mục?

1: Windiff.exe & nbsp;

  1. Tải xuống và mở Windiff.exe.
  2. Trên tab & nbsp; tab tệp> so sánh các thư mục. File tab > Compare Directories.
  3. Nhập, lần lượt, địa chỉ vị trí cho mỗi thư mục.
  4. Bấm OK.OK.

Ứng dụng sẽ cho bạn biết nếu nó tìm thấy sự khác biệt và ở đâu. Để xem sự khác biệt, nhấp vào nút mở rộng & nbsp; ở góc trên bên phải và nhấp đúp vào kết quả màu đỏ trong cửa sổ.Expand button in the right upper corner and double-click the reddened result in the window.

Để hiện tại các khác biệt, nhấp lại vào Tệp> Sao chép tệp> Chọn nơi bạn muốn sao chép từ [trái hoặc phải] + các tệp khác nhau & nbsp;> OK.File > Copy Files > choose where you want to copy from [left or right] + Different files > OK.

2. Winmerge

  1. Tải xuống và mở Winmerge.
  2. Trong tab Tệp> Nhấp vào Mở.File tab > click Open.
  3. Duyệt cho các thư mục bạn muốn so sánh.
  4. Nhấp vào So sánh.Compare.

Các tệp bị thiếu sẽ được tô sáng trong một màu khác.

Để có cùng một thông tin trong cả hai thư mục, hãy truy cập tab hợp nhất> Sao chép tất cả vào bên trái & nbsp; hoặc sao chép tất cả sang phải, tùy thuộc vào thông tin nào đã hoàn tất.Merge tab > Copy All to Left or Copy All to Right, depending which information is complete.

3. Freefilesync

  1. Tải xuống và mở Freefilesync.
  2. Chọn các thư mục bạn muốn so sánh bằng cách duyệt ở vị trí của họ hoặc với tùy chọn kéo và thả.
  3. Nhấp vào So sánh.Compare.

Các tệp bị thiếu sẽ được tô sáng trong một màu khác.compare a local folder versus Google Drive, or a local folder versus a folder your FTP server recursively using FTP or SFTP connection.

Để có cùng một thông tin trong cả hai thư mục, hãy truy cập tab hợp nhất> Sao chép tất cả vào bên trái & nbsp; hoặc sao chép tất cả sang phải, tùy thuộc vào thông tin nào đã hoàn tất.

3. FreefilesyncTwo-way sync, which will identify and apply changes on both sides, or Mirror, which means that the two folders will become a mirror copy of one another.

Tải xuống và mở Freefilesync.

4. Thử nghiệmExamDiff

  1. Tải xuống và mở kỳ thi.
  2. Trong bảng tệp> Chọn So sánh.Files table > select Compare.
  3. Chọn các thư mục bằng cách nhập đường dẫn tệp, kéo và thả hoặc duyệt.
  4. Nhấp vào So sánh.Compare.

Như trong các giải pháp trước, sự khác biệt có màu khác nhau.

Sau đó, để đồng bộ hóa nội dung, truy cập Chỉnh sửa> Thay thế khối trong tệp thứ hai từ đầu tiên hoặc chỉnh sửa> thay thế khối trong tệp thứ hai từ tệp thứ hai.Edit > Replace Block in Second File from First or Edit > Replace Block in Second File from the Second.

Actdiff cũng có phiên bản Pro, được trả tiền và thêm khả năng so sánh các thư mục và tệp nhị phân, so sánh một thư mục cục bộ với máy chủ trên máy chủ FTP bằng cách sử dụng các trình cắm tích hợp hoặc đồng bộ hóa các tệp và thư mục giữa PC và phương tiện bên ngoài.ompare directories and binary files, compare a local folder to the one on FTP server using built-in plug-ins, or synchronize files and folders between your PC and external media.

5. Sử dụng tổng chỉ huyTotal Commander

  1. Tải xuống và mở Tổng chỉ huy.
  2. Từ & nbsp; lệnh & nbsp; tab> click & nbsp; đồng bộ hóa dirsCommands tab > click Synchronize dirs…
  3. Chọn các hộp cho các phụ tùy chọn, & nbsp; và bằng nội dung.
  4. Trong phần Hiển thị> Tắt & NBSP; bằng và bật ba nút khác.Show section > disable Equal and enable the other three buttons.
  5. Bật & nbsp; đơn & nbsp; và & nbsp; trùng lặp & nbsp; tùy chọn. Singles and Duplicates options.
  6. Nhấp vào So sánh.Compare.

Như trong các giải pháp trước, sự khác biệt có màu khác nhau.compare window, select the files you want to copy, then click on the checkbox between the columns and click Synchronize.

Sau đó, để đồng bộ hóa nội dung, truy cập Chỉnh sửa> Thay thế khối trong tệp thứ hai từ đầu tiên hoặc chỉnh sửa> thay thế khối trong tệp thứ hai từ tệp thứ hai.

Actdiff cũng có phiên bản Pro, được trả tiền và thêm khả năng so sánh các thư mục và tệp nhị phân, so sánh một thư mục cục bộ với máy chủ trên máy chủ FTP bằng cách sử dụng các trình cắm tích hợp hoặc đồng bộ hóa các tệp và thư mục giữa PC và phương tiện bên ngoài.

5. Sử dụng tổng chỉ huy

Tải xuống và mở Tổng chỉ huy.

Từ & nbsp; lệnh & nbsp; tab> click & nbsp; đồng bộ hóa dirsStart Scan button and then press on Repair All.

Chọn các hộp cho các phụ tùy chọn, & nbsp; và bằng nội dung.

  • Trong phần Hiển thị> Tắt & NBSP; bằng và bật ba nút khác.

    Bật & nbsp; đơn & nbsp; và & nbsp; trùng lặp & nbsp; tùy chọn.

  • Để đồng bộ hóa hai thư mục, trong cửa sổ so sánh, chọn các tệp bạn muốn sao chép, sau đó nhấp vào hộp kiểm giữa các cột và nhấp vào đồng bộ hóa.

    Như đã đề cập trước đây, đây chỉ là một số công cụ miễn phí có sẵn, không phải là một danh sách đầy đủ. Ngoài ra, có nhiều lựa chọn hơn, bao gồm các công cụ cung cấp các thử nghiệm miễn phí và sau đó các kế hoạch được trả tiền.

  • Nếu bạn có một đề xuất cho một công cụ tương tự, hãy gửi cho chúng tôi một dòng trong phần bình luận bên dưới.

    Vẫn còn vấn đề? Sửa chúng bằng công cụ này:

Được tài trợ

Làm thế nào để bạn so sánh hai thư mục và sao chép các tệp bị thiếu?

Để xem liệu hai thư mục có cùng một tệp không, bạn phải so sánh chúng và xem liệu có bất kỳ sự khác biệt nào không. Để thực hiện việc này, bạn có thể sử dụng một công cụ so sánh tệp như Winmerge, mở nó, chuyển đến tab Tệp, chọn các thư mục bạn muốn so sánh và nhấn so sánh.use a file comparison tool such as WinMerge, open it, go to the File tab, choose the folders you want to compare, and hit Compare.

Làm cách nào để so sánh hai thư mục trong Python?

Phương thức cmpfiles [] trong python được sử dụng để so sánh các tệp trong hai thư mục.Nhiều tập tin có thể được so sánh bằng phương pháp này.Phương thức này trả về ba danh sách tên tệp là khớp, không phù hợp và lỗi. in Python is used to compare files in two directories. Multiple files can be compared using this method. This method returns three lists of file names namely match, mismatch and errors.

Làm thế nào để bạn so sánh nội dung của hai thư mục và đồng bộ hóa chúng?

Winmerge cho phép bạn dễ dàng đồng bộ hóa nội dung của 2 thư mục khác nhau và hợp nhất chúng để cả hai thư mục cuối cùng chứa cùng một tệp ...
Đầu tiên, chọn các thư mục bạn muốn đồng bộ hóa, sau đó nhấn nút So sánh ..
Bây giờ ẩn các tệp hoặc thư mục giống hệt nhau, vì vậy bạn có thể tập trung vào các tệp bạn muốn đồng bộ hóa ..

Làm cách nào để so sánh hai thư mục cho sự khác biệt?

Có một tiện ích miễn phí và an toàn có sẵn trực tuyến có tên Winmerge mà bạn có thể sử dụng để so sánh hai thư mục cha mẹ đó, nó sẽ liệt kê sự khác biệt giữa hai thư mục đó cho bạn và hiển thị cho bạn tên của các tệp trong một thư mục và không phải trongcái khác ...Sức mạnh cho nhà phát triển!WinMerge that you can use to compare those two parent folders, it will list the differences between those two folders for you and show you the names of files that are in one folder, and not in the other . . . Power to the Developer!

Bài Viết Liên Quan

Chủ Đề