【问题标题】:How to replace a hash pattern inside file and directory names (Linux)如何替换文件和目录名称中的哈希模式(Linux)
【发布时间】:2021-03-22 12:39:26
【问题描述】:

我刚刚备份了我在 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 没有官方发行版?

【问题讨论】:

    标签: regex linux shell pattern-matching


    【解决方案1】:

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

    对于意外的交叉/复制粘贴发布,我们深表歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多