更新されたタールボールから古いファイルを抽出/削除する方法

更新されたタールボールから古いファイルを抽出/削除する方法

tarball名前がありますtest.tar。まず、次を実行して名前を作成します。

echo start > 1
tar -cf test.tar 1

それから更新してください。

echo end > 1
tar -uf test.tar 1

これで、このtarアーカイブのファイルのリストを取得すると、次のようになります。

$ tar -tx test.tar

それは私に以下を与えます:

1
1

このファイルの内容を表示しようとすると:

$ tar -xOf test.tar

start
end

最後に抽出したいとき:

$ tar -xf test.tar 1
$ cat 1
end

以前のバージョンを抽出する方法はありますか1? (含まれているものstart)。

もう一つは、このファイルを削除することです。パラメーターを使用すると、--deleteアーカイブからその名前のすべてのファイルが削除されます。既存のものだけを削除するか、新しいもののみを削除するにはどうすればよいですか?

ベストアンサー1

~からここ:

--occurrence[=number]

--deleteこのオプションは、>サブコマンドの1つと一緒に使用したり、--diffコマンドラインまたはオプションを介してファイルのリストを提供したりするときに使用できます。--extract--list-T

このオプションは、tarが指定された各ファイルの最初の項目のみを処理するように指示します。数値のデフォルト値は1なので

tar -x -f archive.tar --occurrence filename

archive.tar 'メンバーの最初の発生がfilename' from >抽出され、アーカイブの最後までスキャンせずに終了します。

したがって、あなたの場合、以前のバージョンを抽出するには、以下を使用します。

tar -xf test.tar --occurrence=1 1

削除するには、以下を実行してください。

tar --delete -f test.tar --occurrence=1 1

両方のバージョンを抽出する別の解決策は、単に--backupスイッチを使用することです。

tar -xf test.tar --backup

次のファイルを抽出します。

1
1~

これは1~古いです。バージョンが3つ以上の場合は、--occurrence代わりにスイッチを使用してください。

-wインタラクティブモードを使用することもできますtar

tar -xf test.tar -w

今回はtar各ジョブのメッセージが表示され、抽出する最初または最後のバージョンを選択できますy/n

おすすめ記事