Этот вопрос говорит о поиске каталогов в текущем каталоге. Решение в основном:
ls -d */
Это здорово, но как я могу легко перечислить символические ссылки? Должен ли я использовать что-то вроде
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
Или есть более простой способ? Можно ли использовать для этого?
man find
шоу, который-d
является синонимом-depth
(для совместимости с FreeBSD, NetBSD, MacOS X и OpenBSD.), Т.е. это не то же самое, что-maxdepth
. , ,-depth
Обработайте содержимое каждого каталога перед самим каталогомОтветы:
В zsh (добавить
N
в скобки, чтобы включить символические ссылки, имя которых начинается с a.
):С большинством
find
реализаций:POSIX-совместимый:
Или с петлей оболочки:
источник
-prune
варианта вам необходимо использоватьfind topdir ! -name topdir -prune
; в противном случае начальный каталог также игнорируется.Это не на Mac, но
работает для меня.
источник
Вы должны использовать,
-type
а не-xtype
:По умолчанию используется значение
-P
, поэтому параметр -xtype будет пытаться определить результирующий файл, а не саму символическую ссылку. На самом деле, я получаю некоторые положительные результаты, что похоже на ошибку.-P -xtype l
Должна возвращать верно (на линке) тогда и только тогда результирующая само по себе является символической ссылкой.Можно также использовать:
ls -FA | sed -ne 's/@//p'
который будет отображать только символические ссылки.источник
sed -ne 's/@//p'
(и дажеsed -ne 's/@$//p'
) не является безопасным тестом, так как первая версия выдаст ложное срабатывание, когда@
происходит где-либо в выводе ls , а вторая вернет ложное положительное значение, когда имя файла действительно заканчивается@
Чтобы узнать только файлы, которые являются символическими ссылками в текущем каталоге:
Это будет рекурсивно перечислять все файлы символических ссылок. Кроме того, он показывает фактические файлы, на которые он указывает.
источник