Bạn có thể sử dụng find để tìm nạp tất cả các tệp thuộc loại symlink và thêm -ilname
tùy chọn để tìm kiếm theo tên của đích liên kết. Điều này hoạt động giống như -iname
nhưng đối với tên mục tiêu liên kết thay vì tên liên kết.
find -type l -ilname "*bar*"
Điều đó vẫn sẽ in ra tên của liên kết, không phải mục tiêu. Nếu bạn muốn in tên của các mục tiêu, hãy thử điều này:
find -type l -ilname "*bar*" -printf "%l\n"
Hoặc có được một ls
đầu ra kiểu đầy đủ
find -type l -ilname "*bar*" -ls
Ý của bạn là " làm gì đó với danh sách " không rõ ràng, nhưng nếu bạn muốn thao tác trên các tệp liên kết, bạn có thể sử dụng -exec
đối số để tìm:
find -type l -ilname "*bar*" -exec touch {} \;
Nhưng nếu bạn cần hoạt động trên các mục tiêu liên kết, bạn sẽ cần sử dụng -printf
để lấy các giá trị đích và sau đó xargs
hoặc một số vòng lặp để tự vận hành. Bạn có thể làm một cái gì đó như thế này:
find -type l -printf "%l\n" | grep bar | xargs touch
... Điều này cũng cho thấy cách sử dụng grep
thay vì find -ilname
thực hiện khớp tên của bạn, mặc dù bạn có thể làm theo cách đó.