как найти и символические ссылки, и каталоги с помощью команды find

Это ваша проблема. Вам нужно добавить свой внутренний DNS-сервер в файл /etc/resolv.conf.

Общедоступные DNS-серверы Google не могут разрешать имена хостов или IP-адреса ваших внутренних серверов или рабочих станций, которые, скорее всего, имеют частные адреса, не маршрутизируемые в Интернете.

Если вы установите для сети значение DHCP, он должен подключиться к вашему внутреннему DNS-серверу. Затем вы можете вернуть его в статическое состояние.

Если это не сработает, вы можете обратиться в свой ИТ-отдел или найти компьютер, который может разрешать внутренние имена хостов, и использовать его для получения внутреннего DNS-сервера.

0
12.03.2020, 10:02
2 ответа

Когда вы добавляете критерии для поиска, по умолчанию применяются все они :, поэтому

find "$go_proj_path_root" -mindepth 1 -maxdepth 1 -type l -type d

запрашивает файлы, которые одновременно являются ссылками и каталогами.

Вам нужно использовать «или»:

find "$go_proj_path_root" -mindepth 1 -maxdepth 1 -type l -o -type d

Хотя здесь это и не обязательно, неплохо выработать привычку использовать круглые скобки вокруг-o:

find "$go_proj_path_root" -mindepth 1 -maxdepth 1 \( -type l -o -type d \)

(сбежали, так что они ничего не значат для оболочки ).

1
28.04.2021, 23:20

Да, -type l -type dозначает "если файл является каталогом и символической ссылкой". Возможно, вы захотите попробовать \( -type l -o -type d \).

Также обратите внимание, что ваш cdне является обязательным (, если только вы не используете его для проверки того, что $go_proj_path_rootявляется каталогом, к которому у вас есть доступ):

find "$go_proj_path_root" -mindepth 1 -maxdepth 1 \( -type l -o -type d \) -print

В качестве альтернативы, поскольку вас, кажется, интересуют только файлы в одном каталоге:

shopt -s nullglob dotglob
for name in "$go_proj_path_root"/*; do
    if [ -d "$name" ] || [ -L "$name" ]; then
        printf '%s\n' "$name"
    fi
done

С оболочкой zsh:

print -rC1 -- $go_proj_path_root/*(ND/) $go_proj_path_root/*(ND@)

... где квалификаторы glob /и @заставят предыдущий шаблон подстановки соответствовать только каталогам или символическим ссылкам соответственно, а NDимеет тот же эффект, что и установка nullglobи dotglobпараметры оболочки вbash(сводятся на нет, если нет совпадений, а также соответствуют скрытым именам ). print -rC1напечатает результирующие имена в одном столбце(-rво избежание интерпретации последовательностей обратной косой черты ).

2
28.04.2021, 23:20

Теги

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