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

her*_*008 25 linux shell

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

现在我想删除“解压缩”生成的所有文件和目录。
我怎样才能撤消它?

Abh*_*ogi 31

用这个:

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

如果您持怀疑态度,请使用此选项(将提示确认)

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

  • FTR 这也会删除原始 zip 文件 (6认同)
  • 我在解压缩的 excel 文件 (xlsx) 上试过这个;得到以下错误:`rm:无法删除'名称':没有这样的文件或目录``rm:无法识别的选项'----'``...(删除了许多文件)...``rm:无法识别的选项'-------'` `rm: 无法删除 'files': 没有这样的文件或目录` 不确定那里到底发生了什么;它还留下了一堆空目录和空目录树。 (3认同)

sar*_*old 6

你处境艰难;标准zipinfo(1)实用程序不提供任何机制来从存档中获取明确的文件名。但是,你可以接近:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i
Run Code Online (Sandbox Code Playgroud)

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


小智 6

unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}
Run Code Online (Sandbox Code Playgroud)

因为-Z调用zipinfo实用程序和-1选项告诉它只打印文件名,所以工作

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