gzipで圧縮されたtarファイルの内容に基づいてディレクトリからファイルを削除する方法は?

gzipで圧縮されたtarファイルの内容に基づいてディレクトリからファイルを削除する方法は?

私は次の点を考慮して:

  • 1000以上のファイルを含むディレクトリを保持します。
  • これらのファイルのサブセットを含むgzipで圧縮されたtarファイル(x.tgz)があります。

gzipで圧縮されたtarファイルの内容を読み取り、tarファイルに含まれているディレクトリからすべてのファイルを削除する単一のコマンドライン(可能な場合)は何ですか?

答え1

tarファイルを作成したディレクトリ(たとえば)に配置する必要があります$HOME。その後、Documentsディレクトリにセキュリティtgzがある場合は、/backup/Documents.tgz次のことができます。

$ for file in $(tar -tzf /backup/Documents.tgz); do \
      [[ -f $file ]] && rm $file || echo "$file does not exist"; done

ディレクトリを削除するにはrm -fr $file

答え2

たぶんこれはあなたに役立つでしょう

rm -rf `find . -name '*.tgz' -exec tar -tzf '{}' \;`

そのように多くのファイルをどのように処理するのか分かりません。

答え3

$ tar -tzf x.tgz  |grep -v '/$' | xargs -n1 -d '\n' echo rm

echoよさそうな場合は削除してください。

説明する:

  • tar -tzf x.tgz - リストの内容
  • grep -v '/$'- ディレクトリをスキップ
  • xargs -n1 -d '\n' echo rm- ()入力-n1の各()行に対して次のように実行します。-d '\n'echo rm

答え4

tar(非常に細かいモードでも)は、tar t出力にシ​​ンボリックリンクとハードリンクをリストしますtar t。使用する方が良いです:

star -t -tpath < archive.tar > file-list.txt

関連情報