Я проверяю вывод скрипта. В некоторых случаях сценарий не удался, и определенный файл не был создан. Я хочу проверить, присутствует ли этот файл в каталоге, а если нет, распечатать имя каталога. Каталоги выглядят так:
6680_4#22_SMALT
Все числа до _SMALT
являются переменными (это уникальный идентификатор), а файл в каталоге будет выглядеть примерно так:
6680_4#22.bam
в этом случае, опять же, числа перед .bam
являются переменными (они будут соответствовать префиксу каталога, т.е. i.d. перед _SMALT
). Есть похожие вопросы, но я не так хорошо знаком со сценарием bash. Некоторые пояснения были бы полезны, а также моя проблема кажется сложной из-за того, что имена файлов меняются в своем префиксе. Любая помощь будет принята с благодарностью.
Что-то вроде этого могло бы работать:
for dir in `find ./serverfault -maxdepth 1 -type d`
do
find_output=$( find ${dir} -type f -name "*#*_SMALT" )
test -z "${find_output}" && echo $dir
done
Этот цикл for делает следующее:
find
команда для поиска нужного имени файла.find
команда пуста. Если это так, напечатайте имя каталога.Чтобы получить обратные результаты, используйте test -n
чтобы проверить, есть ли на выходе find
команда что-то нашла.
редактировать: Я совершенно неправильно понял вопрос, поэтому переписал свой ответ.