统一处理压缩和未压缩的文件
发布于 2009年4月10日
在查看日志文件或其他自动压缩和轮换的文件时,能够以统一的方式处理它们非常有用。 以下 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
如果您有 bzip2 文件,只需修改 data_source 函数以检查它即可。