Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
Dismiss

tarの中のファイルを削除

閲覧: 6,495 回
最初の未読メッセージにスキップ

Tanaka-Qtaro-Yasuhiro

未読、
2004/02/05 7:40:132004/02/05
To:
田中久太郎です。

tarファイルの中から、あるファイルを除いて再度 tarで固め
たいと思っています。どのように処理するのがスマートでしょ
うか?

(例)
foobar.tgz には以下のファイルが含まれています。

foo/abc/b.jpg
foo/abc/c.jpg
foo/bar/a.jpg
foo/bar/b.jpg
foo/bar/c.jpg
foo/def/ghk/a.jpg
foo/def/ghk/c.jpg
foo/a.jpg
foo/c.jpg
foo/other/test1.txt
foo/other/test2.txt

この中から
"c.jpg" という名前のファイルと foo/other/ ディレクトリ
を除いた tar ファイルを作り直します。

今は下記のような感じでやっているのですが、それぞれの
ファイルがでかいので、もっと要領よくできないかなと思っ
ています。
よりスマートな方法があればご教示ください。

tar xzvf foobar.tgz
find foo -name "c.jpg" | xargs rm
rm -rf foo/other
tar czvf new.tgz foo


#もしくは tar ファイル中のファイルを削除するような
#ツールは無いでしょうか?


--
Tanaka-Qtaro-Yasuhiro mailto:ta...@ca2.so-net.ne.jp

名称不定

未読、
2004/02/05 7:56:072004/02/05
To:
試したこと無いですが、

http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html

にある、 --delete オプションでできませんかねぇ?

tar -zf foobar.tgz c.jpg foo/other/

みたいな感じかな?(↑動作未確認!!)

名称不定

未読、
2004/02/05 7:57:092004/02/05
To:
おっとっと、

tar -zf --delete foobar.tgz c.jpg foo/other/

かな?

Tanaka-Qtaro-Yasuhiro

未読、
2004/02/05 20:34:322004/02/05
To:
田中久太郎です。

名称不定さんの<bvteh3$b5e$1...@news511.nifty.com>から


>http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html
>
>にある、 --delete オプションでできませんかねぇ?

おお、そんなオプションがあったんですね。

私が使っている GNU tar 1.13.25 では、圧縮のかかった tarファイル
に --deleteオプションをかけようとすると、

$ tar --delete -zf foobar.tgz foo/other */c.jpg
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now

というエラーが出て削除できませんでした。ですので、

$ zcat foobar.tgz | tar --delete */c.jpg foo/other | gzip > new.tgz

とすることでうまいこといきました。
かなりスマートになりました。どうもありがとうございました。


--
Tanaka-Qtaro-Yasuhiro mailto:ta...@ca2.so-net.ne.jp

Hideo Sir MaNMOS Morishita

未読、
2004/02/06 0:04:022004/02/06
To:

In article <bvuqv8$8f3$1...@news-wst.ocn.ad.jp>,
Tanaka-Qtaro-Yasuhiro <ta...@ca2.so-net.ne.jp> writes:

> $ tar --delete -zf foobar.tgz foo/other */c.jpg
> tar: Cannot update compressed archives
> tar: Error is not recoverable: exiting now
>
> というエラーが出て削除できませんでした。ですので、
>
> $ zcat foobar.tgz | tar --delete */c.jpg foo/other | gzip > new.tgz
>

ちょとだけおせっかいですが、*/c.jpgはquoteして上げた方が良いでしょう。


--
___ わしは、山吹色のかすてーらが大好きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37

新着メール 0 件