Eu suponho que você esteja trabalhando em uma caixa linux com o GNU coreutils. Na bash fazer algo como
find -name "myfile*" -print0 | xargs -n 1 -0 gzip
Para entender a linha de comando acima, procure as opções em man find
e man xargs
. Não há necessidade de tar arquivos únicos, eu acho. Se, por algum motivo misterioso, você realmente precisar da maneira que você escreveu acima, use algo como
find -name "myfile*" -print0 | \
while IFS="" read -r -d $'find -name "myfile*" -print0 | xargs -n 1 -0 gzip
' file
do
[ -f "${file%.*}.tar.gz" ] || tar czvf "${file%.*}.tar.gz" "${file}"
done
Procure as explicações em man bash
. Felicidades!
PS: Para filtrar arquivos já compactados, use uma pré-condição [ "${file##*.}" == "gz" ] ||
antes da proteção contra gravação.