2009-08-27 34 views

Trả lời

5

Đây là một cách:

  • Sử dụng find -printf "%i:\t%p hoặc tương tự để tạo ra một danh sách của tất cả các file bắt đầu bằng inode, và đầu ra vào một tập tin tạm thời
  • Extract trường đầu tiên - các inode với ':' nối - và sắp xếp để mang các bản sao lại với nhau và sau đó giới hạn đối với các bản sao, sử dụng cut -f 1 | sort | uniq -d và xuất sang tệp tạm thời thứ hai
  • Sử dụng fgrep -f để tải tệp thứ hai dưới dạng danh sách chuỗi để tìm kiếm và tìm kiếm tệp tạm thời đầu tiên.

(Khi tôi viết bài này, tôi giải thích câu hỏi là tìm tất cả các tệp có inode trùng lặp. Tất nhiên, người ta có thể sử dụng đầu ra của nửa đầu này làm loại chỉ mục, từ inode sang đường dẫn, giống như cách xác định vị trí hoạt động.)

Trên máy của riêng tôi, tôi sử dụng các loại tệp này rất nhiều và giữ chúng được sắp xếp. Tôi cũng có một ứng dụng chỉ mục văn bản mà sau đó có thể áp dụng tìm kiếm nhị phân để nhanh chóng tìm thấy tất cả các dòng có tiền tố chung. Một công cụ như vậy kết thúc khá hữu ích cho các công việc như thế này.

-2

Điều tôi thường làm là: ls -i <file> để lấy mã inode của tệp đó và sau đó find /dir -type f -inum <inode value> -mount. (Bạn muốn -mount để tránh tìm kiếm trên các hệ thống tệp khác nhau, có thể là một phần trong các vấn đề về hiệu suất của bạn.)

Khác hơn thế, tôi nghĩ vậy.

+2

Anh ấy đã sử dụng '-xdev', giống như '-mount'. Vì vậy, điều này là không tốt hơn. – mark4o

+0

'-samefile' đã thực hiện điều đó trong một bước. –

7

Không có ánh xạ nào từ inode để đặt tên. Cách duy nhất là để đi bộ toàn bộ hệ thống tập tin, như bạn đã chỉ ra là O (số lượng tệp). (Thực ra, tôi nghĩ rằng đó là θ (số lượng tệp)).

3

Tôi biết đây là câu hỏi cũ, nhưng nhiều phiên bản find có tùy chọn inum để khớp một số inode được biết một cách dễ dàng. Bạn có thể thực hiện việc này bằng lệnh sau:

find . -inum 1234 

Điều này sẽ vẫn chạy qua tất cả các tệp nếu được phép, nhưng khi bạn kết hợp, bạn luôn có thể dừng thủ công; Tôi không chắc chắn nếu find có tùy chọn dừng sau một trận đấu đơn lẻ (có lẽ với tuyên bố -exec?)

Điều này dễ dàng hơn so với kết xuất đầu ra vào tệp, sắp xếp vv và các phương pháp khác, vì vậy nên sử dụng khi có sẵn.

+0

workaround đẹp – Labynocle

+0

Câu trả lời hay. Ngay cả máy chủ gentoo cũ của tôi cũng tìm thấy tùy chọn '-inum'. – suspectus

+0

Để dừng trận đấu đầu tiên, bạn có thể thử một cái gì đó như 'tìm. -inum 1234 | đầu -n1'. – Ruslan

Các vấn đề liên quan