我知道使用拙劣的 unTAR 可以做到这一点,尽管我不记得确切的命令了……但是在这种情况下,是否可以使用 mac 终端“撤消”最近的“解压缩”命令?
这是/usr/bin/unzip在 10.7和 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
Run Code Online (Sandbox Code Playgroud)
我怎样才能“重新压缩”或反向解析 zip 文件?
zip 文件中有一个部分列出了存档中的文件,尽管严重损坏.. 例如..
0L'†C 0L'†C !?V?B PK&Å‘:?@`¢îF3$ Lmacos/lib/libexiv2.2.1.0.dylib
Run Code Online (Sandbox Code Playgroud)
无需手动筛选该列表,是否有灵丹妙药?
use*_*517 10
你可以试试
unzip -t zipfile.zip | awk '{print $2}' | tail -n +2 | xargs echo
Run Code Online (Sandbox Code Playgroud)
或者
unzip -t zipfile.zip | awk '{print $2}' | sed 's/zipfile.zip//' | xargs echo
Run Code Online (Sandbox Code Playgroud)
如果文件名中有空格
unzip -l zipfile.zip | tail -n +4 | head -n -2 | awk '{print "\""substr($0,index($0,$4))"\""}' | xargs rm
Run Code Online (Sandbox Code Playgroud)
检查输出是否合理,然后更改echo为rm。特别是检查您的 zipfile 是否未在输出中列出。这并不完美,因为它会使目录保持不变,但它可能比手动浏览它更容易。
Iain 的回答在我的机器上抛出了一个我无法弄清楚的与头部相关的错误......所以我继续编写了包含他的部分解决方案的小 BASH 脚本,并且效果很好......只需传递原始 zip作为此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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |