test.tar
という名前のtarball
があります。これは、次のコマンドを実行して最初に作成しました。
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
を含むもの)。
もう1つは、これらのファイルを削除することです。--delete
パラメーターを使用すると、その名前のすべてのファイルがアーカイブから削除されます。古いものまたは新しいものだけを削除するにはどうすればよいですか?
から ここ :
--occurrence[=number]
このオプションは、ファイルのリストがコマンドラインまたは
--delete
オプションを介して指定されている場合に、サブコマンド>--diff
、--extract
、--list
、または-T
のいずれかと組み合わせて使用できます。このオプションは、各名前付きファイルの出現回数のみを処理するようにtarに指示します。番号のデフォルトは1なので、
tar -x -f archive.tar --occurrence filename
メンバー
filename' from >
archive.tar 'の最初のオカレンスを抽出し、アーカイブの最後までスキャンせずに終了します。
したがって、古いバージョンを抽出するには、次を使用します。
tar -xf test.tar --occurrence=1 1
そして削除の実行のために:
tar --delete -f test.tar --occurrence=1 1
両方のバージョンを抽出する別の回避策は、単に--backup
スイッチを使用することです。
tar -xf test.tar --backup
次のようにファイルを抽出します。
1
1~
どの1~
が古いものです。 2つ以上のバージョンを入手した場合は、代わりに--occurrence
スイッチを使用してください。
-w
を使用してtar
インタラクティブモードを使用することもできます。
tar -xf test.tar -w
今回はtar
が各アクションを要求しますが、y/n
によって抽出する最初のバージョンまたは最後のバージョンを選択できます。