在命令行中通过正则表达式重命名文件

sor*_*h-r 2 rename

尝试将文件从一个位置移动到另一个位置时我犯了一个错误。现在所有文件都被移动了,但*在所有名称的末尾都有一个连接。

如何*从命令行中的文件名末尾删除所有s?

注意:我正在使用嵌入式系统,没有任何 Internet 连接。请提供无需安装新东西的解决方案。

提前致谢

chr*_*tis 5

有一个名为 (in over originality) 的命令rename,它允许您使用正则表达式重命名文件。

在这种情况下,您可能想要执行以下操作:

rename 's/\*//' files...
Run Code Online (Sandbox Code Playgroud)

这将删除*在每个文件名中找到的第一个字符。

rename -n如果您担心正则表达式不正确,您可以使用列出将要执行的重命名而不实际执行它们。

  • 这将替换文件名中任何位置的每个 `*`(不仅在末尾)。`s/\\*$//` 或 `'s/\*$//'` 可能会更好。 (2认同)

Sil*_*lke 5

Ubuntu 自带的rename命令可以通过正则表达式重命名文件。

如果您的所有文件都位于同一文件夹中,您只需执行以下操作:

rename s/\\*$// *
Run Code Online (Sandbox Code Playgroud)

\\*是转义*$是文件名的结尾。匹配将被替换为空。)

如果所有文件都在目录结构中,则可以使用 find:

find / -exec rename s/\\*$// {} \;
Run Code Online (Sandbox Code Playgroud)

rename /\\*$//在您系统上的每个文件和目录上执行。随意更改为/目录结构所在的文件夹。