Почему я не могу включить SSH на нескольких портах?

Обратное ответу Иниана , т. е. искать каталоги, а затем смотреть, содержат ли они файл с определенным именем.

Далее выводятся пути к найденным файлам относительно каталогаfoo:

find foo -type d -exec sh -c '
    for dirpath do
        pathname="$dirpath/${dirpath##*/}.pdf"
        if [ -f "$pathname" ]; then
            printf "%s\n" "$pathname"
        fi
    done' sh {} +

${dirpath##*/}будет заменен частью имени файла в пути к каталогу и может быть заменен на $(basename "$dirpath").

Для тех, кто любит короткий -синтаксис схемы:

find foo -type d -exec sh -c '
    for dirpath do
        pathname="$dirpath/${dirpath##*/}.pdf"
        [ -f "$pathname" ] && printf "%s\n" "$pathname"
    done' sh {} +

Преимущество такого способа заключается в том, что у вас может быть больше файлов PDF, чем каталогов. Количество задействованных тестов уменьшается, если ограничить запрос меньшим числом (числом каталогов ).

Например, если один каталог содержит 100 PDF-файлов, будет предпринята попытка обнаружить только один из них, а не сравнивать имена всех 100 файлов с именами каталога.

1
20.07.2021, 19:12
0 ответов

Теги

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