Вопрос касается shell-скриптинга в bash
.
Как проверить с помощью скрипта, какие файлы в текущем каталоге являются программными ссылками?
В случае, если я использовал неправильный термин, когда я говорю мягкие ссылки , я имею в виду файлы, созданные с использованием ln -s
.
Единственное, что мне удалось придумать, - это оценить ls -la
как выражение и проанализировать его результаты, но, очевидно, это не лучшее решение.
bash
symbolic-link
ls
shell-script
ln
bguiz
источник
источник
Ответы:
Смотрите «УСЛОВНЫЕ ВЫРАЖЕНИЯ» в
man bash
- в этом случае вы хотите-h
:источник
test -h
это то, что я хотел!Возможно, вам не нужен сценарий. Чтобы показать любые символические ссылки только в текущей папке, не возвращаясь ни в одну дочернюю папку:
Или, чтобы получить больше информации, используйте один из:
Чтобы определить, является ли файл символической ссылкой, можно использовать
readlink
, которая ничего не выдаст, если это не символическая ссылка. Следующий пример не совсем полезен, но показывает, какreadlink
игнорирует обычные файлы и папки. Используйте один из:Обратите внимание, что выше
-exec ... +
иxargs ...
гораздо быстрее, чем-exec ... \;
. Подобно:источник
xargs
это намного быстрее на моем Mac; см. мое редактирование Но я узнал что - то новое сегодня: есть также+
вместо\;
(Хотя некоторые утверждают , что это имеет / имел проблемы сgrep
.)