следующие три строки bash ...
for archive in *.tar.gz; do
tar zxvf "${archive}" 2>&1 | sed -e 's!x \([^/]*\)/.*!\1!' | sort -u | xargs some_script.sh
done
... будет перебирать каждый сжатый архив в текущем каталоге, распаковывать его, захватывать самые верхние каталоги распакованного содержимого и передавать их в качестве аргументов somescript.sh
. Это, вероятно, использует больше каналов, чем вы ожидали, но, похоже, делает то, что вы просите.
N.B: tar xf
может принять только один файл за вызов.