#!/usr/bin/ruby # # tar アーカイブから pattern にマッチする名前のファイルを抽出し # unzip -c 互換のヘッダとともに連結・出力する require 'tarreader' pattern = Regexp.new(ARGV.shift) unless pattern and not ARGV.empty? puts "usage: #{$0} pattern tarfile ..." exit 16 end ARGV.each {|arg| TarReader.open(arg) {|tar| # 末尾改行せず。次は必ず extracting またはファイル終端が来るため。 STDOUT.write "Archive: #{arg}" tar.each_entry {|ent| next unless pattern === ent.name body = ent.read STDOUT.write "\n extracting: #{ent.name}\n" STDOUT.write body } } } # 非改行終端の電文を処理しやすくするため必ず改行で終える STDOUT.write "\n"