Вы можете использовать find, чтобы получить все файлы типа symlink и добавить -ilname
опцию для поиска по имени назначения ссылки. Это работает так же, как и -iname
для целевого имени ссылки вместо имени ссылки.
find -type l -ilname "*bar*"
Это все равно распечатает имя ссылки, а не цель. Если вы хотите напечатать имена целей, попробуйте это:
find -type l -ilname "*bar*" -printf "%l\n"
Или получите полный ls
стиль вывода
find -type l -ilname "*bar*" -ls
Что вы подразумеваете под « сделать что-то со списком », неясно, но если вы хотите работать с файлами ссылок, вы можете использовать -exec
аргумент для поиска:
find -type l -ilname "*bar*" -exec touch {} \;
Но если вам нужно работать с целевыми объектами ссылки, вам нужно будет использовать -printf
целевые значения для получения целевых значений, а затем xargs
или какой-либо цикл самостоятельно. Вы могли бы сделать что-то вроде этого:
find -type l -printf "%l\n" | grep bar | xargs touch
... который также демонстрирует, как использовать grep
вместо find -ilname
сопоставления вашего имени, хотя вы можете сделать это в любом случае.