如何“撤消”解压缩命令?


19

我使用“ unzip XXX.zip”解压缩了一个zip文件,不幸的是,我弄错了。

现在,我要删除“ unzip”生成的所有文件和目录。
我该如何撤消呢?

Answers:


29

用这个:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

如果您对此表示怀疑,请使用它(将提示您进行确认)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

如果任何文件的名称中都带有空格,则失败...(+ 1现在带有-i编辑。:)
sarnold 2012年

问题出在awk '{print $4}'-带有空格的文件名可能在$4 $5 $6 ...。:)
sarnold

1
好。也修复了该问题。
Abhijeet Rastogi'2

5
FTR也会删除原始的zip文件
sjr 2014年

我的方式:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei 2015年

5

您处在一个崎rough的地方;标准zipinfo(1)实用程序不提供任何从存档中获取明确文件名的机制。但是,您可以接近:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

如果您确定所有文件中都没有换行符,则可以删除的-i选项rm(1)(这肯定会很乏味)。


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

做这项工作是因为-Z调用了zipinfo实用程序和-1选项,告诉它仅打印文件名

您可以通过man unzipman 1 zipinfo命令找到关于此的更多详细信息


1

如果要在意外解压缩后清理目录而不先创建文件夹,则可以创建该文件夹,然后将其解压缩,然后:

rm -r ` ls folder `

“`”对于链接命令超级有用,但是它非常文字。

注释改善了这个答案,如果您想确保也删除隐藏文件(您可能会这样做),请执行此操作

rm -r ` ls -A folder `

急于使用不正确的语法表示歉意,可以删除否决权吗?
chrispepper1989

1
如果zip拒绝覆盖任何文件,则原始文件将被删除。如果解压缩了任何隐藏文件,则不会删除它们(除非您使用ls -a)。
gmarmstrong '19

1
或更确切地说,ls -A为避免列表中出现错误,.以及..
gmarmstrong19年

0

要在Nautilus中执行此操作(不使用命令行),您可以导航到意外提取文件的位置,通过单击“修改”选项卡对文件进行排序,然后选择并删除所有标有您确切时间的文件运行unzip命令。


1
请仔细阅读问题。您的答案没有回答原始问题。不幸的是,Linux不包括Windows资源管理器。
DavidPostill

啊,是的!直到现在,我才意识到解压缩不是Windows终端命令。谢谢!我将检查Nautilus是否具有类似的功能并编辑答案。否则,我将其删除。
cameronroytaylor

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.