将压缩和未压缩的数据源同等对待
发布于 2008 年 12 月 19 日
有时,您需要处理许多文件——其中一些文件已被压缩,而另一些文件则没有(想想日志文件)。与其运行两个变体,一个压缩的和另一个未压缩的,不如将它包装在一个 bash 函数中
function data_source ()
{
local F=$1
# strip the gz if it's there
F=$(echo $F | perl -pe 's/.gz$//')
if [[ -f $F ]] ; then
cat $F
elif [[ -f $F.gz ]] ; then
nice gunzip -c $F
fi
}
这样可以很好地实现
for file in * ; do data_source $file | ... done
无论您处理的是 gzip 压缩的文件还是未压缩的文件,您都不再需要对它们进行不同的对待。稍加努力,也可以检测和处理 bzip 文件。
