find -path не соответствует файлам, если не указано расширение

Это заполнители для ассоциаций пулов. Смотрите эту ошибку:

Ошибка 2014 :странное взаимодействие между директивой пула и maxclock

Обратите внимание на pв столбце типа? Это указывает на то, что это запись-заполнитель для директив пула.

Что касается «почему этот вопрос?», проблема заключается в том, что вы используете для анализа вывода перед его отправкой в ​​collectd. Он должен игнорировать любую строку, содержащую типp

-1
25.06.2018, 09:06
2 ответа

Здесь есть две проблемы.

  1. Необходимо экранировать *, иначе оболочка будет обрабатывать (сопоставление файлов в текущем каталоге, если таковые имеются):

    find -path \*ncf.js
    

    или

    find -path '*ncf.js'
    
  2. Поведение, которое вы видите, происходит из-за того, что выражение подстановки полностью соответствует пути к файлу , включая расширение. (Используйте -nameдля соответствия имени файла, которое по-прежнему включает расширение. )Это относится не только к find, попробуйте lsв каталоге, содержащем ваши файлы.

Обратите внимание, что вы должны привыкнуть указывать начальный каталог, даже если это .; не все версии findиспользуют его по умолчанию.

5
28.04.2021, 23:45

Я добавлю, потому что это не объясняется в другом ответе.

find -path "*ncf"
find -path "*ncf.js"

Вышеупомянутое не одно и то же (примечание :Я взял глобус в кавычки, чтобы оболочка не расширила его ).Причина в том, что :один заканчивается на ncf, другой заканчивается на ncf.js. Если это сбивает с толку, вам нужно отказаться от расширения файлов. В Unix их нет :Точка — это просто символ, он не обрабатывается по-другому (за исключением случаев, когда это первый символ, в этом случае он скрыт :он может не отображаться в списке каталогов ).

1
28.04.2021, 23:45

Теги

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