Làm cách nào để tìm và liệt kê tất cả các liên kết tượng trưng được tạo cho một tệp cụ thể?


52

Tôi đã tạo ra nhiều liên kết tượng trưng trên các đường dẫn khác nhau cho một tệp hoặc một thư mục cụ thể. Tôi muốn toàn bộ danh sách các đường dẫn liên kết tượng trưng được tạo ra (vị trí).

Thí dụ:

Tôi đã tạo các liên kết tượng trưng cho ~/Picturesthư mục trên nhiều thư mục. Làm thế nào để tôi liệt kê tất cả các liên kết tượng trưng đến ~/Picturesthư mục đó ?

Điều đó có thể không? Nếu có thì làm thế nào?


Bạn cần tìm kiếm đầy đủ, không có số lượng được lưu trữ như có liên kết cứng. Xem một trong những câu trả lời bằng cách sử dụng find.
ctrl-alt-delor

Câu trả lời:


42

Đây là một ví dụ:

find -L /dir/to/start -xtype l -samefile ~/Pictures

hoặc, có thể tốt hơn:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

để thoát khỏi một số lỗi như Permission denied, Too many levels of symbolic linkshoặc File system loop detectedđó findném chúng khi không có đủ quyền hạn hoặc các tình huống khác.

  • -L - Thực hiện theo các liên kết tượng trưng.

  • -xtype l - Tập tin là liên kết tượng trưng

  • -samefile name- Tập tin đề cập đến cùng một nút như name. Khi -Lcó hiệu lực, điều này có thể bao gồm các liên kết tượng trưng.

Ghi chú:

  • Sử dụng chữ thường L trong -xtype l, không phải chữ số 1.
  • Trên macOS / Darwin, -xtype-type.

Lệnh có thể được sửa đổi để tìm liên kết tượng trưng có chứa một đường dẫn không? ví dụ như các tập tin trên hệ thống mà có thể liên kết đến ~ / Pictures / A, ~ / Pictures / A / B / C, hoặc bất kỳ tập tin trong các thư mục con của ~ / Hình>
vì tuyết

7

Rất đơn giản, sử dụng tùy chọn -lname:

find / -lname /path/to/original/dir

Từ man find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

Lưu ý : Hãy nhớ rằng các liên kết tượng trưng có thể ở bất cứ đâu, bao gồm một hệ thống từ xa (nếu bạn đang chia sẻ tệp), vì vậy bạn có thể không tìm thấy tất cả chúng.


Cũng lưu ý, nếu liên kết tượng trưng là một đường dẫn tương đối như thế ../dirthì nó sẽ không tìm thấy sự tuyệt đối /path/to/original/dirmà bạn có thể sử dụng một mẫu và loại bỏ các kết quả dương tính giả-lname \*dir
Jason S

2

Thử đi :

ls -i ~/

277566 Pictures

find . -follow -inum 277566(tìm thư mục có cùng số inode )

Nó sẽ hiển thị tất cả các đường dẫn liên kết tượng trưng của nó.


4
Điều này sẽ tìm thấy các liên kết cứng, không phải liên kết tượng trưng. Liên kết cứng chia sẻ số inode. liên kết tượng trưng có số inode khác nhau. nút của một liên kết tượng trưng có một đường dẫn thay vì danh sách khối.
hildred

câu hỏi không đề cập đến liên kết tượng trưng cứng hay mềm
nux

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.