Visits

[+/-]
Today:
Yesterday:
Day before yesterday:
29
389
372

+17
This week:
Last week:
Week before last week:
1515
2427
2483

-56

Last month:
Month before last month:
10693
9885
8946

+939

Visitor Data

IP ADDRESS
38.107.191.86
-
Location
United States
-
Browser
Unknown Browser
-
Operating System
Unknown Operating System

Most Downloaded


No Documents
Add to: JBookmarks Add to: Bookmarks.cc Add to: Digg Add to: Reddit Add to: Upchuckr Add to: StumbleUpon Add to: Slashdot Add to: Blogmarks Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Smarking Add to: Spurl Add to: Google Information

10

Oct

Undoing bad archives
Most zip or tar archives are made so that they unpack into a sub-directory. However, every now and then you run into one that wasn't done that way, and if you happen to unpack it in a directory that already has files, you end up with confusion: what was just unpacked and what was already here?

Of course an "ls -lt" gives you some idea, though not for directories: you'll need just "ls -l" to see recent dates for any directories created by the archive.

For illustration, I created three empty files (a, b, c) in a directory and then unzipped an archive into it. The results of various "ls" commands are shown:

$ ls -l

total 17064

drwxr-xr-x   4 foo  group      136 Oct  7 16:35 BuildFiles

-rw-r--r--   1 foo  group    17984 May  5  2004 COPYING

drwxr-xr-x   3 foo  group      102 Oct  7 16:35 Cd

-r--r--r--   1 foo  group    15377 Oct 14  2003 Citrix EULA.txt

drwxr-xr-x   3 foo  group      102 Oct  7 16:35 Floppy

-rw-r--r--   1 foo  group     1099 May  5  2004 LICENSE

drwxr-xr-x   5 foo  group      170 Oct  7 16:35 RebuildIsoWithConf

-rw-r--r--   1 foo  group  8684127 Oct  7 16:35 Thinstation-2.1.1-prebuilt-LiveCD.zip

-rw-r--r--   1 foo  group     6263 Jul 28 13:01 _HowTo-LiveCD.txt

-rw-r--r--   1 foo  group        0 Oct  7 16:35 a

-rw-r--r--   1 foo  group        0 Oct  7 16:35 b

-rw-r--r--   1 foo  group        0 Oct  7 16:35 c

$ ls -lt

total 17064

drwxr-xr-x   4 foo  group      136 Oct  7 16:35 BuildFiles

drwxr-xr-x   3 foo  group      102 Oct  7 16:35 Floppy

drwxr-xr-x   5 foo  group      170 Oct  7 16:35 RebuildIsoWithConf

drwxr-xr-x   3 foo  group      102 Oct  7 16:35 Cd

-rw-r--r--   1 foo  group  8684127 Oct  7 16:35 Thinstation-2.1.1-prebuilt-LiveCD.zip

-rw-r--r--   1 foo  group        0 Oct  7 16:35 a

-rw-r--r--   1 foo  group        0 Oct  7 16:35 b

-rw-r--r--   1 foo  group        0 Oct  7 16:35 c

-rw-r--r--   1 foo  group     6263 Jul 28 13:01 _HowTo-LiveCD.txt

-rw-r--r--   1 foo  group     1099 May  5  2004 LICENSE

-rw-r--r--   1 foo  group    17984 May  5  2004 COPYING

-r--r--r--   1 foo  group    15377 Oct 14  2003 Citrix EULA.txt

What a mess. There's no easy way to identify what came from this archive if we didn't already know.

So, the easiest thing to do is to delete it and start over in a clean sub-directory. But how can you delete files if you don't know which ones should be deleted?

Not so hard, actually. Try this:

$ mkdir t

$ cd t

$ unzip ../Thinstation-2.1.1-prebuilt-LiveCD.zip

Archive:  ../Thinstation-2.1.1-prebuilt-LiveCD.zip

  inflating: COPYING                 

  inflating: Cd/thinstation.iso      

  inflating: Floppy/thinstation.profile/thinstation.conf.user  

  inflating: BuildFiles/thinstation.conf.buildtime.prebuilt-cd  

  inflating: BuildFiles/build.conf.prebuilt-cd  

  inflating: LICENSE                 

  inflating: Citrix EULA.txt         

  inflating: _HowTo-LiveCD.txt       

  inflating: RebuildIsoWithConf/rebuild-iso.bat  

  inflating: RebuildIsoWithConf/mkisofs.exe  

  inflating: RebuildIsoWithConf/cd-files/delme.txt  

$ for i in *; do rm -rf "../$i"; done

$ cd ..

$ ls -l

total 16968

-rw-r--r--   1 apl  staff  8684127 Oct  7 16:35 Thinstation-2.1.1-prebuilt-LiveCD.zip

-rw-r--r--   1 apl  staff        0 Oct  7 16:35 a

-rw-r--r--   1 apl  staff        0 Oct  7 16:35 b

-rw-r--r--   1 apl  staff        0 Oct  7 16:35 c

drwxr-xr-x   2 apl  staff       68 Oct  7 16:38 t

All clean. The files are in "t" and the mess is gone. Unless there were "." files in that mix; this script doesn't touch those. Add .[0-z]* if you must.