如何递归重命名文件/文件夹以使其名称对Windows友好?


11

我在Ubuntu盒子上有一堆文件,这些文件名中包含Windows不接受的各种字符(主要是“:”和“ *”,但可能还有其他字符)。

将所有这些重命名并移至Windows计算机的最简单方法是什么?可以将这些字符替换为“ [冒号””和“ [星号]”。


1
即使在Linux下(尤其是*),也应避免使用此类名称。
cYrus

4
@cYrus取决于您如何处理文件。我想这只是脚本编写和shell中的问题。我在OS X上,唯一的禁止字符是:,这已经够糟糕了。在文件内容后命名很有用,如果文章名称以问题结尾,则文件名也应如此。
丹尼尔·贝克

@cYrus和我在我的软件中使用,但是有些人已经编写了某些软件。例如,qmail几乎在它创建的每个文件名中都使用:。
2011年

@Daniel Beck:当然,但是不幸的是,拥有一个支持这种名称的文件系统是远远不够的,因为您可以使用使整个事情变得混乱的程序。我什至不使用空格。
cYrus

2
@Steven好问题!我认为Windows会稍微有用些,因为有人可能会在Windows上收到文件并必须在该平台上对其进行修复。
珀尔帖

Answers:


4

看看Glindra重命名排毒

Glindra文件实用程序可以安装在Windows或Linux上。在Windows上清理文件名的示例:

rena *.* -portable

rena *.* -safe
  • -safe将
    前划线(连字符)映射到下划线。
    折叠空格。
    将诸如* ?: []“ <> |(){}之类的有问题的字符映射到下划线。
  • -portable
    执行与-safe相同的清除操作,此外:
    将拉丁1字母上半部分的所有8位字符映射为合理的7位后备字符。
    将单引号字符“`”映射到下划线。

来源:修复Unix / Linux / POSIX文件名:控制字符(例如换行符),前导破折号和其他问题


该页面显示404。Google 缓存的副本
丹尼尔·贝克

这是David Wheeler的一个令人敬畏的咆哮!尤其是在尝试将CD插入JungleDisk名为“〜\ irina”的目录后,我摔了键盘之后。想猜猜是否完成了制表符吗?...
RomanSt 2011年

1
Detox用于使Windows文件对Unix友好,而不是相反。
endlith 2011年

3
@DennisWilliamson-似乎glindra(对于Windows)无法重命名具有无效文件名的字符。 G:\spc>rena.exe -safe -portable *.txt输出[FATAL-ERROR] Filename syntax error: aa:a.txt
史蒂文

1
在使用Linux时,请注意语法的变化,即rena '*.*' -portable,如果要递归使用,请rena '***/*.*' -portable在Linux上使用类似的东西。而且我相信重命名应该在Linux而不是Windows上完成。
holroy

4

尝试Recuva

这是我发现的唯一处理非Windows友好文件名的Windows实用程序。

启用“ 扫描未删除的文件(以从损坏或重新格式化的磁盘恢复)”并扫描文件夹。还原时,启用“还原文件夹结构”。Recuva可以有效地将整个目录“复制”到另一个位置,同时对不友好的文件名进行“分类”。


1

无需使用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' {} +

请注意,这需要与所有其他非法的Windows字符一起扩展,例如<>:"/\|?*
holroy

0

如果您的文件已经在NTFS卷上,则似乎从Windows运行chkdisk可以解决此问题。不幸的是,似乎是通过删除有问题的文件来实现的。


0

我将前两个答案与pyRenamer(GUI)结合使用。在Linux下,我使用pyRenamer折叠了文件夹名称(目录)中的空格-通过不使用空格代替空格-以便其他程序(Glindra重命名)以递归方式工作(一个可以放在下划线)。我还从文件中取出了一些Windows可接受的字符或单词以节省空间,并在文件名中类似地折叠了空格。然后,我运行rena取出非Windows字符,保存到闪存驱动器中,然后使用Recuva将其“还原”到Windows下的文件夹中。Recuva指示文件路径是否太长(并且还会删除非Windows字符)。我尚未找到一种检查文件名路径的工具,以查看文件名是否在Windows最大值255以下(或说240以允许有余地)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.