![解压后缺少一些文件](https://linux22.com/image/172923/%E8%A7%A3%E5%8E%8B%E5%90%8E%E7%BC%BA%E5%B0%91%E4%B8%80%E4%BA%9B%E6%96%87%E4%BB%B6.png)
我在Ubuntu 16.04上使用默认压缩工具右键压缩了大量小文件(6102个pdf&txt文件)并将zip文件上传到网盘。然而,当其他人下载并在 Windows 上解压后,他们得到的文件都减少了(5809)。我尝试重新压缩并重新发送,但没有成功。其他人获得的文件仍然较少。不过我在Ubuntu上解压,是6102个文件。为什么 Ubuntu 和 Windows 之间有所不同? ps:我尝试了两个不同的网盘。都是5809。
答案1
根据评论,这是由于文件名包含字符*
.这个角色,和其他一些角色一起(和子字符串),在 Windows 系统上的文件名中无效。
在您的 Unix 系统上,您可以使用 Perl实用程序将所有*
字符更改为例如(下划线) ,如下所示:_
rename
rename -v 'tr/*/_/' ./*'*'*.pdf
这假设 PDF 文件全部位于当前目录中。该表达式tr/*/_/
是一个 Perl 表达式,它将所有内容更改*
为_
字符串(文件名),并且文件名通配模式将匹配当前目录中名称中./*'*'*.pdf
至少有一个且带有文件名后缀的任何文件。*
.pdf
一个简单的循环在 中执行相同的操作bash
:
for name in *'*'*.pdf; do
mv -i "$name" "${name//'*'/_}"
done
...其中"${name//'*'/_}"
将被替换为"$name"
所有*
字符都更改为_
字符。