Możesz użyć find, aby pobrać wszystkie pliki typu dowiązanie symboliczne i dodać -ilname
opcję wyszukiwania według nazwy miejsca docelowego łącza. Działa to tak samo, jak -iname
w przypadku nazwy docelowej łącza zamiast nazwy łącza.
find -type l -ilname "*bar*"
To nadal wypisze nazwę linku, a nie celu. Jeśli chcesz wydrukować nazwy celów, spróbuj tego:
find -type l -ilname "*bar*" -printf "%l\n"
Lub uzyskaj pełny efekt ls
wyjściowy
find -type l -ilname "*bar*" -ls
To, co rozumiesz przez „ zrób coś z listą ”, jest niejasne, ale jeśli chcesz operować na plikach łączy, możesz użyć -exec
argumentu, aby znaleźć:
find -type l -ilname "*bar*" -exec touch {} \;
Ale jeśli musisz operować na elementach docelowych łącza, będziesz musiał użyć przycisku, -printf
aby uzyskać wartości docelowe, a następnie xargs
wykonać pętlę samodzielnie. Możesz zrobić coś takiego:
find -type l -printf "%l\n" | grep bar | xargs touch
... który pokazuje również, jak używać grep
zamiast find -ilname
dopasowywania imienia, chociaż możesz to zrobić w obie strony.
find /dev/disk/ -type l -ilname "*sde*"
nie działa?