Điểm:2

Làm cách nào để tìm các thư mục con giống nhau trong hai thư mục chỉ ở cấp độ đầu tiên?

lá cờ cn

Kịch bản:

  • 2 thư mục chính, có thể có các thư mục con có cùng tên (tôi không biết tên nào có thể bị trùng, đó là những gì tôi đang cố gắng tìm)
  • các thư mục con có NHIỀU tệp và thư mục con khác nên các công cụ có đệ quy tự động không thực sự là một tùy chọn
  • Tôi chỉ quan tâm đến tên thư mục con trùng lặp ở cấp độ đầu tiên của hai thư mục chính
  • nội dung của các thư mục con không quan trọng
  • nội dung của các tập tin không quan trọng

tôi đã thử sử dụng pha trộn GUI nhưng điều đó chỉ mất vô số thời gian để hoàn thành các cấu trúc này.

tôi đã thử sử dụng diff --brief --report-identical-files folder1 folder2 nhưng về cơ bản nó báo cáo mọi thứ và nó thậm chí không bao gồm các thư mục nên tôi thậm chí không thể | grep giống hệt nhau.

Tôi đang sử dụng các công cụ sai? Hoặc có một số mẹo mà tôi đã không nhận được từ khác biệt --trợ giúp ? Hay tôi đang làm gì đó sai?

Cảm ơn

Điểm:5
lá cờ in

Tôi sẽ sử dụng một cách đơn giản tìm thấy:

tìm "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sắp xếp | uniq -d

Hoặc để làm cho nó không bị chấm dứt để ngăn sự cố với các ký tự dòng mới:

tìm "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1 -type d -printf '%f\0' | sắp xếp -z | uniq -zd | xargs -0
terdon avatar
lá cờ cn
@jave.web không sao chép: tạo một thư mục mới, sau đó tạo liên kết tượng trưng tới hai thư mục đích của bạn trong thư mục mới này và sử dụng `find -L /path/to/new/folder -mindepth ....` (` -L` ra lệnh cho `find` đi theo các liên kết tượng trưng). Bằng cách này, bạn không cần sao chép dữ liệu.
jave.web avatar
lá cờ cn
Ok, sau khi chỉnh sửa, nó hoạt động chính xác như mong đợi. (Lưu ý nếu bạn muốn tương tự cho các tệp, hãy sử dụng `-type f` thay vì `-type d`. @terdon cảm ơn vì đề xuất đó chắc chắn cũng là một cách tiếp cận
Điểm:1
lá cờ hr

sử dụng zsh, được cho

% cây dir1 dir2
dir1
âââ thanh
âââ foo
    âââ baz
dir2
âââ thanh
â âââ baz
âââ baz

6 thư mục, 0 tập tin

sau đó

% a=( dir1/*(/ND:t) ) ; b=( dir2/*(/ND:t) )

tạo ra các mảng của tails (tên cơ sở) của các thư mục / trong hai thư mục cấp cao nhất dir1dir2 (với Dotglob và Nđã bật tùy chọn ullglob).

Sau đó, chúng ta có thể sử dụng khai triển của mẫu ${tên:*tên mảng} để chỉ giữ lại các phần tử có trong cả hai mảng:

% in -rC1 ${a:*b}
quán ba

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.