Перечислить символьные ссылки в текущем каталоге?

Объем стандартного входа, это - сам сценарий, поэтому просто помещает Ваш код в blocku как это:

{
  diff file1 <(sort file2)
}

Таким образом объем STDIN это в блоке..

Я попробовал, и это работает.

8
13.04.2017, 15:36
4 ответа

В zsh (добавляют N в круглых скобках для включения символьных ссылок, имя которых начинается с a .):

echo *(@)

С большинством find реализации:

find -maxdepth 1 -type l

Совместимый POSIX:

find . -type d \! -name . -prune -o -type l -print

Или с циклом оболочки:

for x in * .*; do
  if [ -h "$x" ]; then echo "$x"; done
done
9
27.01.2020, 20:09
  • 1
    Для -prune опция, необходимо использовать find topdir ! -name topdir -prune; иначе начальный каталог проигнорирован также. –  Arcege 04.10.2011, 13:55

Это не находится на Mac, но

find . -maxdepth 1 -type l

работы для меня.

6
27.01.2020, 20:09

Необходимо использовать -type и нет -xtype:

   -xtype c
          The same as -type unless the file is a symbolic link.  For  sym‐
          bolic  links:  if the -H or -P option was specified, true if the
          file is a link to a file of type c; if the -L  option  has  been
          given,  true  if  c is `l'.  In other words, for symbolic links,
          -xtype checks the type of the file that -type does not check.

Значение по умолчанию -P, таким образом,-xtype опция попытается определить результирующий файл, не саму символьную ссылку. На самом деле я получаю некоторые положительные результаты, который походит на ошибку. -P -xtype l должен возвратить true (на символьной ссылке) эквивалентность, результант является самостоятельно символьной ссылкой.

Может также использовать: ls -FA | sed -ne 's/@//p' который отобразит только символьные ссылки.

3
27.01.2020, 20:09
  • 1
    хорошее ls решение –  frogstarr78 04.10.2011, 06:56
  • 2
    sed -ne 's/@//p' (и даже sed -ne 's/@$//p') не безопасный тест, поскольку первая версия даст ложь, положительную когда @ происходит где угодно в выводе ls, и второе возвратит false, положительный, когда имя файла на самом деле закончится в @ –  Peter.O 04.10.2011, 07:39

Для обнаружения только файлов, которые являются символьными ссылками в текущем каталоге:

find . -type l -printf '%p -> %l\n'

Это рекурсивно перечислит все файлы символьной ссылки. Кроме того, это показывает фактические файлы, на которые это указывает.

1
27.01.2020, 20:09

Теги

Похожие вопросы