我知道这是可能的一个拙劣的unTAR,虽然我不记得确切的命令….但是有可能“撤销”一个最近的“解压”命令,在这种情况下,使用macterminal?
这是在10.7上使用/usr/bin/unzip , 使用UnZip 5.52。
比方说,我开始像这样的文件夹结构….
admin$ pwd /usr/local/src admin$ ls pots pans scrubbers.zip admin$ unzip scrubbers.zip admin$ ls pots pans scrubbers.zip zebraturd.doc README.md morestuffididntmeantoputhere.py cleanme.junkmail surfraw.2.html scrubbers.explaination
我怎么才能“重新压缩”或反向parsingzip文件?
有一个zip文件中的一个部分列出档案中的文件,虽然相当严重损坏..例如..
0L'†C 0L'†C !∏V≤B PK&Å':√@`¢îF3$ Lmacos/lib/libexiv2.2.1.0.dylib
没有手动筛选这个列表,这是否有一个神奇的子弹?
你可以试试
unzip -t zipfile.zip | awk '{print $2}' | tail -n +2 | xargs echo
要么
unzip -t zipfile.zip | awk '{print $2}' | sed 's/zipfile.zip//' | xargs echo
如果你有空格的文件名
unzip -l zipfile.zip | tail -n +4 | head -n -2 | awk '{print "\""substr($0,index($0,$4))"\""}' | xargs rm
检查输出是否合理,然后改变rm echo显。 特别是检查你的zip文件没有在输出中列出。 这不是完美的,因为它会使目录保持不变,但这可能比通过手工操作更容易。
Iain的回答在我的机器上抛出了一个与头相关的错误,我无法弄清楚…所以我继续写下一点BASH脚本,其中包括他的解决scheme的一部分,这工作相当不错…只是通过原来的拉链作为这个ununzip.sh脚本的一个参数。注释rm行预览“行动”。
#!/bin/bash COUNT=0 # USAGE: PURGE=CLEAR # chmod +x ununzip.sh && ./ununzip.sh file.zip THATDARNzip=$1 # THIS IS YOUR file.zip, THE ARGUMENT PURGE=(`unzip -t THATDARNzip | awk '{print $2}' | xargs echo`) COUNT=${#PURGE[@]} # HOW MUCH STUFF GOT UNZIPPED? echo "total items "$COUNT echo -e "item at 0 is ${PURGE[0]}" # WE DON'T DELETE THE ORIGINAL ZIP FILE while [ "$COUNT" -gt 0 ]; do echo -e "deleting ${PURGE[${COUNT}]}" rm -r "${PURGE[${COUNT}]}" # COMMENT THIS LINE FOR A DRY RUN COUNT=$[ $COUNT - 1 ] done exit 0
我只是手动删除crud,同时竭力劝告自己没有检查zip文件是合理形成(他们总是不是)与unzip -l首先。
尝试这个:
$ unzip -l scrubbers.zip | sed '1,3d' | sed 'N;$!P;$!D;$d' | awk '{ print $4 }' | xargs rm -fr