我在 Ubuntu 机器上有一堆文件,它们的文件名中包含各种 Windows 不接受的字符(主要是“:”和“*”,但也可能还有其他)。
将它们全部重命名并移动到 Windows 机器的最简单方法是什么? 可以用“[冒号]”和“[星号]”之类的字符替换这些字符。
答案1
看一眼Glindra 重命名和排毒。
Glindra 文件实用程序可以安装在 Windows 或 Linux 上。在 Windows 上清理文件名的示例:
rena *.* -portable
rena *.* -safe
答案2
尝试雷库瓦。
这是我发现的唯一一个可以处理非 Windows 友好文件名的 Windows 实用程序。
使能够扫描未删除的文件(用于从损坏或重新格式化的磁盘中恢复)并扫描您的文件夹。恢复时,启用恢复文件夹结构。Recuva 将有效地将整个目录“复制”到另一个位置,同时“净化”不友好的文件名。
答案3
如果不使用 Linux,也不需要进行任何测试,我相信可以使用如下的单行命令。
改变一个字符:
find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +
最后删除所有非字母数字字符:
find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +
答案4
我结合了前两个答案和 pyRenamer (GUI) 来解决这个问题。在 Linux 下,我使用 pyRenamer 折叠文件夹名称(目录)中的空格 - 通过用空白替换空格 - 以便其他程序(Glindra rename)可以递归工作(可以放置下划线)。从文件中,我还取出了一些 Windows 可接受的字符或单词以节省空间,并同样折叠了文件名中的空格。然后我运行 rena 取出非 Windows 字符,保存到闪存驱动器,然后使用 Recuva“恢复”到 Windows 下的文件夹。Recuva 指示文件路径是否太长(它还会删除非 Windows 字符)。我还没有找到一个工具来检查文件名的路径,看它们是否低于 Windows 的最大限制 255(或者说 240 以留出一些余地)。