#!/bin/bash
# ideone boilerplate: run in temp dir
t=$(mktemp -d -t ideone.XXXXXXXX) || exit
trap 'rm -rf "$t"' ERR EXIT
cd "$t"
mkdir -p myfiles/all1 myfiles/all2 myfiles/all3
populate () {
printf '%s\n' "$@" | gzip
}
populate 'Avast! Ahoy! Alas!' \
'Shiver me whiskers' >myfiles/all1/input.gz
populate 'One' 'Two' 'Alas!' \
'Four' >myfiles/all2/input.gz
populate 'Move along' \
'Nothing to see here' >myfiles/all3/input.gz
cat <<\____ >prog.py
import gzip
import glob
with open('file1.txt', 'w') as o:
for file in glob.glob('myfiles/all*/input.gz'):
with gzip.open(file, 'rt') as f:
for line in f:
if 'Alas!' in line:
print(line, file=o, end='')
____
python3 ./prog.py
tail file1.txt
IyEvYmluL2Jhc2gKCiMgaWRlb25lIGJvaWxlcnBsYXRlOiBydW4gaW4gdGVtcCBkaXIKdD0kKG1rdGVtcCAtZCAtdCBpZGVvbmUuWFhYWFhYWFgpIHx8IGV4aXQKdHJhcCAncm0gLXJmICIkdCInIEVSUiBFWElUCmNkICIkdCIKCm1rZGlyIC1wIG15ZmlsZXMvYWxsMSBteWZpbGVzL2FsbDIgbXlmaWxlcy9hbGwzCnBvcHVsYXRlICgpIHsKICBwcmludGYgJyVzXG4nICIkQCIgfCBnemlwCn0KcG9wdWxhdGUgJ0F2YXN0ISBBaG95ISBBbGFzIScgXAogICdTaGl2ZXIgbWUgd2hpc2tlcnMnID5teWZpbGVzL2FsbDEvaW5wdXQuZ3oKcG9wdWxhdGUgJ09uZScgJ1R3bycgICdBbGFzIScgXAogICdGb3VyJyA+bXlmaWxlcy9hbGwyL2lucHV0Lmd6CnBvcHVsYXRlICdNb3ZlIGFsb25nJyBcCiAgJ05vdGhpbmcgdG8gc2VlIGhlcmUnID5teWZpbGVzL2FsbDMvaW5wdXQuZ3oKCmNhdCA8PFxfX19fID5wcm9nLnB5CmltcG9ydCBnemlwCmltcG9ydCBnbG9iCgp3aXRoIG9wZW4oJ2ZpbGUxLnR4dCcsICd3JykgYXMgbzoKICAgIGZvciBmaWxlIGluIGdsb2IuZ2xvYignbXlmaWxlcy9hbGwqL2lucHV0Lmd6Jyk6CiAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZSwgJ3J0JykgYXMgZjoKICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgIGlmICdBbGFzIScgaW4gbGluZToKICAgICAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPW8sIGVuZD0nJykKX19fXwoKcHl0aG9uMyAuL3Byb2cucHkKCnRhaWwgZmlsZTEudHh0