GNUにtar(1)
はと呼ばれるきちんとしたオプションがあります--transform
。manページから:
--transform、-xform EXPRESSION
は、sed replace EXPRESSIONを使用してファイル名を変換します
これにより、アーカイブの抽出中にその場でパス名を変換できるため、どこにどのように抽出するかを制御できます。
私の質問は、その場で同様の変換を実行する方法はありますか。つまり、アーカイブを抽出せずに?
例
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
使用事例
tar
基本的に無知なエンドユーザーにアーカイブを配布していますが、邪魔されずに正しいパスに抽出してほしいと思います。私は、アーカイブの抽出、ディレクトリの名前の変更、アーカイブが多すぎるので再パックするという簡単な解決策を避けようとしています。
作成時に名前を変換しないのはなぜですか?
—
マーティン
@JoseLuisMartinそうです。私のユースケースは、アーカイブがすでに存在していることです。前述したように、解凍、変換、再パックは避けたいと思います。
—
ジョセフR.
あなたは、実際にディスクにそれを抽出することなくタールの流れを変更することができます。github.com/mafintosh/tar-stream#modifying-existing-tarballs、perldoc.perl.org/5.10.1/Archive/Tar.html、など
—
vladr