撤消tar文件提取混乱

迈克·T

我只是解压缩了一个归档文件,该归档文件将杂乱的文件输入到我的整洁目录中。例如:

user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...

我期望tar文件会被组织在一个文件夹(即myarchive/)中,但事实并非如此!现在,我已经将大约190个文件和目录以数字方式推入了一个有组织的目录中。这些未压缩的文件需要清理。

有什么方法可以“撤消”此操作并删除从该存档中提取的文件和目录?


感谢您下面的出色回答。总而言之,这是两个步骤的工作:(1)删除文件,和(2)以相反的包装顺序删除空目录结构(首先删除外部目录):

tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir

而且更安全,可以通过echo在之后附加来预览命令的试运行xargs

丹尼尔·安德森(Daniel Andersson)
tar tf archive.tar

将逐行列出内容。

这可以xargs直接通过管道传递,但是要注意:删除时要非常小心。希望只是告诉您rm -r所有内容tar tf,因为它可能包含在解压缩前不为空的目录!

你可以做

tar tf archive.tar | xargs -d'\n' rm -v
tar tf archive.tar | sort -r | xargs -d'\n' rmdir -v

首先删除存档中的所有文件,然后删除保留为空的目录。

sort -r(glennjackman建议tac而不是sort -r在接受的答案的注释中使用该方法,因为tar的输出足够有规律,因此也可以使用)首先需要删除最深的目录;否则,在传递之后将保留dir1一个包含空目录的情况,因为删除之前目录不为dir2dir1rmdirdir2

这会产生很多

rm: cannot remove `dir/': Is a directory

rmdir: failed to remove `dir/': Directory not empty
rmdir: failed to remove `file': Not a directory

2>/dev/null如果让您感到烦恼,请关闭它,但我希望在此过程中保留尽可能多的信息。

并且,除非您确定匹配正确的文件,否则请不要这样做。也许尝试rm -i确认所有内容。并备份,吃早餐,刷牙等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章