Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I used "unzip XXX.zip" to extract a zip file, unfortunaly, i make a mistake.

Now i want to delete all the file and directorys generated by "unzip".
How can I undo it?

share|improve this question

migrated from stackoverflow.com Feb 1 '12 at 3:19

This question came from our site for professional and enthusiast programmers.

add comment

2 Answers

up vote 11 down vote accepted

use this:

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

Use this if you are skeptical (will prompt for confirmation)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 
share|improve this answer
    
Fails if any files have spaces in their names... (+1 now with the -i edit. :) –  sarnold Feb 1 '12 at 3:17
    
The problem is in the awk '{print $4}' -- a filename with spaces might be in $4 $5 $6 .... :) –  sarnold Feb 1 '12 at 3:24
1  
Ok. Fixed that too. –  shadyabhi Feb 1 '12 at 3:29
    
Thanks very much, awk might be the best solution –  hero2008 Feb 1 '12 at 5:14
    
FTR this also deletes the original zip file –  sjr Jun 14 at 15:39
add comment

You're in a rough spot; the standard zipinfo(1) utility doesn't provide any mechanism to get unambiguous filenames out of an archive. But, you can come close:

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

If you're sure none of the files have newlines in them, you can remove the -i option to rm(1) (which will surely get tedious).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.