tar diff: ファイル名のみを取得

tar diff: ファイル名のみを取得

GNU tarを使用すると、tar df books.tar.bz2次のような詳細な結果が得られます。

books/a.pdf: Mod time differs
books/a.pdf: Size differs
books/b.pdf: Mod time differs
books/b.pdf: Size differs

次の出力を取得する便利な方法はありますか?

a.pdf b.pdf

理由は簡単です。tar df ...たとえばgtar cfvj books-updated.tar.bz2 a.pdf b.pdf

答え1

次の組み合わせを使用できます。

tar -df archive.tar | awk -F: '{print $1}' | sort -u

tar -df変更されたファイルをインポートする(すでに持っている)

awk -F: '{print $1}'最初の「列」のみ印刷

sort -u重複排除

編集:@roaimaの入力に応じて、名前にコロン(またはスペース)を含むファイルを一致させる必要がある場合は、awkその部分を次のように置き換えることができます。

sed 's/\(.*\):.*/\1/'

これにより、コロンが最後に表示されるまで(最初の列の終わり)ファイル名のみが表示されます。

答え2

まだ見ましたかstar

あなたが使用できる:

star -diff -tpath < archive.tar

このオプションは-tpath違いを生み出します。

starの最新バージョンはschilytoolsにあります。

関連情報