关于Shell中执行`zip *`命令的结果及文件定位删除的技术问询
执行
zip *后找不到压缩文件?教你定位并删除它! 嘿,我太懂这种手滑敲错命令的崩溃了!别慌,我来帮你搞清楚这事儿~
为啥找不到带.zip后缀的文件?
当你在shell里敲了zip *,shell会把*展开成当前目录下所有文件/文件夹的列表(按字母排序)。而zip命令的语法是zip [选项] 压缩包名 要压缩的内容,所以列表里的第一个文件/文件夹的名字就被当成了压缩包的文件名——而且zip不会自动给它加.zip后缀!更坑的是,这个原本的文件会被直接覆盖成压缩包,所以你自然找不到带.zip的文件啦。
怎么找到这个“伪装”的压缩包?
用file命令可以检测每个文件的类型,它能轻松识别出zip格式的文件:
file *
执行后,找输出里带有Zip archive data的那一行,对应的文件名就是那个被改成压缩包的文件。比如你可能会看到这样的输出:
a.txt: Zip archive data, at least v2.0 to extract b.jpg: JPEG image data, JFIF standard 1.01 docs: directory
那这里的a.txt就是你要找的“失踪”的压缩包。
怎么删除它?
直接用rm命令删掉就行,比如对应上面的例子:
rm a.txt
⚠️ 重要提醒:原来的a.txt已经被压缩包覆盖了,没法恢复了,除非你之前有备份哦。
下次别再踩坑啦!
以后压缩所有文件的时候,记得明确指定压缩包的名字,比如:
# 压缩当前目录所有文件到archive.zip zip archive.zip * # 如果要连子目录一起递归压缩,加上-r参数 zip -r archive.zip .
备注:内容来源于stack exchange,提问作者Yuandong Liu
相关产品推荐
相关产品推荐

