Grub2 encryption reprompt

Это не точный ответ на ваш заголовок (вложение if внутри find), но для всех целей это лучшее решение, чем вставка целого сценария оболочки внутри find.

Также обратите внимание, что внутри общего sh тесты [[ не работают, а [ не соответствуют шаблону в правой части =. Или используйте regex ==~, как я полагаю, вам нужно. Таким образом, вам понадобится оболочка bash, что не имеет особого смысла, если вы уже находитесь внутри оболочки bash. В любом случае, это быстрее, чем запускать новую оболочку:

#!/bin/bash
while IFS= read -rd '' file; do
    if [[ $(file "$file" | cut -f2 -d':') =~ " data" ]]; then
        printf "%s is CORRUPT\n" "$file"
    else
        printf "%s is DATA\n" "$file"
    fi
done < <(find . -type f -print0)

Оговорка: я изменил ваш == на =~, предполагая, что вы хотите найти ' data' текст в PNG-изображении (или что-то подобное):

$ file TrueTable-1.png| cut -f2 -d':'
PNG image data, 405 x 292, 8-bit colormap, non-interlaced

Пожалуйста, сделайте комментарий, если это предположение неверно.

4
25.10.2016, 12:39
0 ответов

Теги

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