если рекурсивно найти ext, то, иначе на unix

если рекурсивно найти ext, то, иначе на unix

Это то, что я обычно использую. Но мне нужно рекурсивно найти расширение с, then, и else. Проблема с этим в том, что оно не рекурсивное.

if ls $HOME/Downloads/*.ext >/dev/null 2>&1
then
    :
else
    :
fi

решение1

Используйте findвместо ls. Если у вас есть GNU find, вы можете использовать -quitдля выхода после первого совпадения. Затем просто проверьте, вернул ли он какой-либо результат.

Скрипт будет выглядеть примерно так:

if [ -n "$(find $HOME/Downloads -name '*.ext' -print -quit | head -n 1)" ]
then
    :
else
    :
fi

Используйте -iname вместо -name для выполнения поиска без учета регистра.

Связанный контент