質問: このようなディレクトリ構造で、 ``` . ├── foo │ ├── bar │ └── baz └── foo.tar.gz ``` 圧縮ファイルの展開結果と同名のディレクトリ `foo` に気付かず展開コマンド `tar -xf foo.tar.gz` を実行してしまい、`foo` 以下に元々あったファイルと新しく展開されたファイルが混ざってしまいました。(実際はもう少したくさんのファイルと深いディレクトリ構造があります。) 混ざってしまうとマズいので展開してしまったファイルだけ削除したいのですが、どのようにすると手っ取り早いでしょうか? なお、ファイルが上書きされてしまうと戻せない気がしますが、`foo.tar.gz` を別の場所で展開して自分の記憶と照合する限り同名ファイルは無いように思うので、上書きは無いものと仮定して頂いて構いません。同名ディレクトリはありました。また、もし上書きの可能性まで検出できるような方法があればそれもあると嬉しいです。 ### 環境 * Ubuntu 18.04.3 LTS * Bash
回答: 上書きは無いと仮定するなら、アーカイブに含まれるファイル一覧(`tar tf`)の出力結果を元に、 そのファイルを削除する方法はどうでしょうか。 ``` $ tar tzf foo.tar.gz | grep -v '/$' | xargs rm ``` リストの内、末尾が`/`で終わるものはディレクトリ名なはずなので、こちらは安全のため敢えて除外しています。中身が空な事を確認して不要であれば削除した方が良いかなと思いました。