Cấu trúc thư mục tương tự được lặp lại một lần trong thư mục “common_dir” để đưa ra các tùy chọn so sánh đệ quy thú vị
So sánh tệp
Mô-đun filecmp bao gồm các chức năng và một lớp để so sánh các tệp và thư mục trên hệ thống tệp. Nếu bạn cần so sánh hai tệp, hãy sử dụng hàm cmp[]
import filecmp print 'common_file:', print filecmp.cmp['example/dir1/common_file', 'example/dir2/common_file'], print filecmp.cmp['example/dir1/common_file', 'example/dir2/common_file', shallow=False] print 'not_the_same:', print filecmp.cmp['example/dir1/not_the_same', 'example/dir2/not_the_same'], print filecmp.cmp['example/dir1/not_the_same', 'example/dir2/not_the_same', shallow=False] print 'identical:', print filecmp.cmp['example/dir1/file_only_in_dir1', 'example/dir1/file_only_in_dir1'], print filecmp.cmp['example/dir1/file_only_in_dir1', 'example/dir1/file_only_in_dir1', shallow=False]
Theo mặc định, cmp[] chỉ xem thông tin có sẵn từ os. thống kê[]. Đối số nông cho biết cmp[] có xem nội dung của tệp hay không. Mặc định là thực hiện so sánh nông mà không cần nhìn vào bên trong các tệp. Lưu ý rằng các tệp có cùng kích thước được tạo cùng lúc dường như giống nhau nếu nội dung của chúng không được so sánh
$ python filecmp_cmp.py common_file: True True not_the_same: True False identical: True True
Để so sánh một tập hợp các tệp trong hai thư mục mà không cần lặp lại, hãy sử dụng filecmp. cmpfiles[]. Các đối số là tên của các thư mục và danh sách các tệp sẽ được kiểm tra ở hai vị trí. Danh sách các tệp phổ biến chỉ nên chứa tên tệp [các thư mục luôn dẫn đến sự không khớp] và các tệp phải có ở cả hai vị trí. Đoạn mã dưới đây cho thấy một cách đơn giản để xây dựng danh sách chung. Nếu bạn có một công thức ngắn hơn, hãy đăng nó trong phần bình luận. Việc so sánh cũng lấy cờ nông, giống như với cmp[]
import filecmp import os # Determine the items that exist in both directories d1_contents = set[os.listdir['example/dir1']] d2_contents = set[os.listdir['example/dir2']] common = list[d1_contents & d2_contents] common_files = [ f for f in common if os.path.isfile[os.path.join['example/dir1', f]] ] print 'Common files:', common_files # Compare the directories match, mismatch, errors = filecmp.cmpfiles['example/dir1', 'example/dir2', common_files] print 'Match:', match print 'Mismatch:', mismatch print 'Errors:', errors
cmpfiles[] trả về ba danh sách tên tệp cho các tệp khớp, tệp không khớp và tệp không thể so sánh được [do sự cố về quyền hoặc vì bất kỳ lý do nào khác]
$ python filecmp_cmpfiles.py Common files: ['not_the_same', 'file_in_dir1', 'common_file'] Match: ['not_the_same', 'common_file'] Mismatch: ['file_in_dir1'] Errors: []
sử dụng dircmp
Các chức năng được mô tả ở trên phù hợp với các phép so sánh tương đối đơn giản, nhưng để so sánh đệ quy các cây thư mục lớn hoặc để phân tích đầy đủ hơn, lớp dircmp sẽ hữu ích hơn. Trong trường hợp sử dụng đơn giản nhất, bạn có thể in báo cáo so sánh hai thư mục bằng phương thức report[]
import filecmp filecmp.dircmp['example/dir1', 'example/dir2'].report[]
Đầu ra là một báo cáo văn bản thuần túy hiển thị kết quả của chỉ nội dung của các thư mục đã cho, mà không cần đệ quy. Trong trường hợp này, tệp “not_the_same” được cho là giống nhau vì nội dung không được so sánh. Không có cách nào để dircmp so sánh nội dung của các tệp như cmp[] có thể
$ python filecmp_dircmp_report.py diff example/dir1 example/dir2 Only in example/dir1 : ['dir_only_in_dir1', 'file_only_in_dir1'] Only in example/dir2 : ['dir_only_in_dir2', 'file_only_in_dir2'] Identical files : ['common_file', 'not_the_same'] Common subdirectories : ['common_dir'] Common funny cases : ['file_in_dir1']
Để biết thêm chi tiết và so sánh đệ quy, hãy sử dụng report_full_closure[]
import filecmp filecmp.dircmp['example/dir1', 'example/dir2'].report_full_closure[]
Đầu ra bao gồm các so sánh của tất cả các thư mục con song song
$ python filecmp_dircmp_report_full_closure.py diff example/dir1 example/dir2 Only in example/dir1 : ['dir_only_in_dir1', 'file_only_in_dir1'] Only in example/dir2 : ['dir_only_in_dir2', 'file_only_in_dir2'] Identical files : ['common_file', 'not_the_same'] Common subdirectories : ['common_dir'] Common funny cases : ['file_in_dir1'] diff example/dir1/common_dir example/dir2/common_dir Common subdirectories : ['dir1', 'dir2'] diff example/dir1/common_dir/dir2 example/dir2/common_dir/dir2 Identical files : ['common_file', 'file_only_in_dir2', 'not_the_same'] Common subdirectories : ['common_dir', 'dir_only_in_dir2', 'file_in_dir1'] diff example/dir1/common_dir/dir2/common_dir example/dir2/common_dir/dir2/common_dir diff example/dir1/common_dir/dir2/dir_only_in_dir2 example/dir2/common_dir/dir2/dir_only_in_dir2 diff example/dir1/common_dir/dir2/file_in_dir1 example/dir2/common_dir/dir2/file_in_dir1 diff example/dir1/common_dir/dir1 example/dir2/common_dir/dir1 Identical files : ['common_file', 'file_in_dir1', 'file_only_in_dir1', 'not_the_same'] Common subdirectories : ['common_dir', 'dir_only_in_dir1'] diff example/dir1/common_dir/dir1/common_dir example/dir2/common_dir/dir1/common_dir diff example/dir1/common_dir/dir1/dir_only_in_dir1 example/dir2/common_dir/dir1/dir_only_in_dir1
Sử dụng sự khác biệt trong chương trình của bạn
Bên cạnh việc tạo báo cáo in, dircmp tính toán danh sách tệp hữu ích mà bạn có thể sử dụng trực tiếp trong chương trình của mình. Mỗi thuộc tính sau đây chỉ được tính toán khi được yêu cầu, do đó, việc khởi tạo một dircmp không phát sinh thêm nhiều chi phí
Các tệp và thư mục con chứa trong các thư mục được so sánh được liệt kê trong left_list và right_list
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same0
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same1
Các đầu vào có thể được lọc bằng cách chuyển một danh sách các tên cần bỏ qua cho hàm tạo. Theo mặc định, tên RCS, CVS và thẻ bị bỏ qua
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same2
Trong trường hợp này, “common_file” bị loại khỏi danh sách các tệp được so sánh
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same3
Tập hợp các tệp chung cho cả hai thư mục đầu vào được duy trì chung và các tệp duy nhất cho mỗi thư mục được liệt kê trong left_only và right_only
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same4
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same5
Các thành viên chung có thể được chia nhỏ thành các tệp, thư mục và các mục "vui nhộn" [bất kỳ thứ gì có loại khác nhau trong hai thư mục hoặc có lỗi từ os. thống kê[]]
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same6
Trong dữ liệu ví dụ, mục có tên “file_in_dir1” là một tệp trong một thư mục và một thư mục con trong thư mục kia, vì vậy nó hiển thị trong danh sách “vui nhộn”
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same7
Sự khác biệt giữa các tệp được chia nhỏ tương tự
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same8
Hãy nhớ rằng, tập tin “not_the_same” chỉ được so sánh qua os. stat và nội dung không được kiểm tra
$ ls -Rlast example total 0 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 . 0 drwxr-xr-x 9 dhellmann dhellmann 306 Apr 20 17:04 .. 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir1 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 dir2 example/dir1: total 32 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same example/dir2: total 24 0 drwxr-xr-x 8 dhellmann dhellmann 272 Apr 20 17:04 . 0 drwxr-xr-x 4 dhellmann dhellmann 136 Apr 20 17:04 .. 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 common_dir 8 -rw-r--r-- 1 dhellmann dhellmann 21 Apr 20 17:04 common_file 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 dir_only_in_dir2 0 drwxr-xr-x 2 dhellmann dhellmann 68 Apr 20 17:04 file_in_dir1 8 -rw-r--r-- 1 dhellmann dhellmann 22 Apr 20 17:04 file_only_in_dir2 8 -rw-r--r-- 1 dhellmann dhellmann 17 Apr 20 17:04 not_the_same9
Cuối cùng, các thư mục con cũng được ánh xạ tới các đối tượng dircmp mới trong các thư mục con thuộc tính để cho phép so sánh đệ quy dễ dàng