No seu script de exemplo, você tem:
egrep -o -f regex1 "$file" > regex1/"${file%.*}"_regex1.txt
egrep -o -f regex2 "$file" > regex2/"${file%.*}"_regex2.txt
Mas então você pergunta:
For each file. How can I set the output do go into docs/regex1 instead of trying to go to regex1/docs?
Você está explicitamente colocando regex1
no início do caminho para o qual está redirecionando a saída. Basta corrigir isso para corresponder ao que você deseja e remover o caminho à esquerda de $file
:
egrep -o -f regex1 "$file" > docs/regex1/"$( basename "${file%.*}" )"_regex1.txt
egrep -o -f regex2 "$file" > docs/regex2/"$( basename "${file%.*}" )"_regex2.txt