如何替换文件名和目录名中的哈希模式 (Linux)

问题描述

我刚刚备份了 Notion 中的笔记,它们在笔记名称中使用了哈希码,使它们看起来独一无二。

例如,这可能是一个带有一些笔记的笔记文件夹:

Archive e74f698cb73b42c790d08999bdbe47e4
├── Note 1 cda63bef095a493f9847d516cf34fa5f.md
├── Note 2 dda63bef095a493f9847d516cf34fa5f.md

(有时还有一个用于表的 .csv 文件

我尝试使用 [a-z0-9]{32} 之类的正则表达式来替换模式,但在使用 s/ 时遇到了困难:

find -type f -print0 | xargs -0 rename 's/[a-z0-9]{32}//g'

(我不确定我是否真的理解 -print0-0 的目的。)

上面的代码仅适用于文件,但我也尝试使用 mv $f ${f:0:-34} 之类的东西,但我也无法使其工作。有没有办法让文件文件夹只用一行替换,而不用 fors?

我已经在 StackOverflow 上尝试了许多关于此问题的其他答案,但到目前为止我发现的几乎所有答案都只处理文件或将固定词作为模式处理。

我想使用 Mass-Move 命令行工具 (mmv),但没有 Arch Linux 的官方发行版?

解决方法

steeldriver 已创建 a very complete and thorough answer on the Unix & Linux StackExchange。整个讨论原本应该都在这里。但问题在某个时候已经结束,我不得不在那里重新提问。当它回到这里时,我提醒了 steeldriver,但他显然既不感兴趣也不知道。我会留下这个答案,直到他选择在此处复制粘贴或链接他自己的内容。

对于意外的交叉/复制粘贴发布感到抱歉。