我的 Linux NAS 上有名称相同的杂项文件夹,但大小写除外,如下所示:
- /数据/库
- /数据/库/预设
- /数据/库/预设
- /数据/库/预设
- /合并/自述文件
- /合并/自述文件
- /合并/自述文件
- /合并/自述文件
- 等等
这在 Linux 上是可以的,即使不是可取的,但是因为这是在为 Windows PC 提供服务的 NAS 上,所以客户端 PC 会感到困惑,并且实际上只显示其中一个文件夹的内容,尽管显示了所有变体......
有这么多,我想自动将这些文件夹合并在一起。
我们最终得到的大小写实际上是无关紧要的,尽管“每个单词的首字母大写”的格式会更受欢迎,但如果可能的话,最终目标是每个文件夹名称中只有一个。
(注意:我知道这些文件夹中包含的文件名也可能存在冲突,但经过讨论,我愿意冒可能存在具有不同内容的同名文件的风险,仅仅是因为目前很多的内容甚至都不容易访问!)
是否有任何现成的 CLI 工具(或 BASH 脚本)来执行此操作?
所以我最终为最重要的子文件夹创建了一个单独的不区分大小写的数据集(在重命名原始子文件夹之后),然后运行 rsync 将数据移动到该新数据集......
现在一切都很好地整合了,我对最终结果非常满意。AFAICT 我们没有丢失任何相关数据... ;) (在开始之前我跑了
find . | sort -f | uniq -Di
,我只看到文件夹,没有文件,所以我怀疑我们可能会丢失任何东西!)有一些建议不要对 Samba 共享执行此操作,因为 Samba 可以区分大小写,bla bla bla,但他们可以引用的最糟糕的问题是您无法将文件从“Readme.txt”重命名为“ReadMe,txt” ,因为底层 ZFS 将报告该文件已经存在...解决方法很明显:给它一个不同的名称,如“Read Me.txt”,或者在重命名之前暂时重命名它“readme1.txt”。 ...那些建议不要在下面使用不区分大小写的 FS 的人都没有答案,这正是我遇到的问题!