Удалить некоторые записи списка или массива в bash
Просто зациклите и сопоставьте:
result=()
for file in "${dir_list[@]}"
do
if [[ "$file" != *"unwanted_pattern"* ]]
then
result+=("$file")
fi
done
dir_list=( "${result[@]}" )
Однако это ответ на ваш XY вопрос , а не то, что вы должны делать.
Более разумным способом было бы не добавлять их в первую очередь, добавив такую проверку в ваш цикл, а еще более разумным способом было бы просто find
исключить их:
find give_directory_Here -mindepth 2 -maxdepth 2 -type d ! -path '*unwanted_pattern*' -print0