如何从 CLI 快速重命名 macOS 或 linux 上的文件?

Posted

技术标签:

【中文标题】如何从 CLI 快速重命名 macOS 或 linux 上的文件?【英文标题】:How to quickly rename my files on macOS or linux from CLI? 【发布时间】:2021-08-04 06:22:21 【问题描述】:

这是我的源文件。

e2f9eb91-645f-408a-9241-66490b61a617_file-module-1.txt
d20f06a8-4de1-4da0-8175-93e9b2d81c42_file-module-2.txt
6740a19f-e1a0-43da-9a01-9e873238360e_file-module-3.txt
.
.
.

我需要找到一种方法来重命名所有文件以删除前 36 个字符到 _file 或替换为其他内容。我希望所有文件都如下所示。

_file-module-1.txt or Yong_file-module-1.txt
_file-module-2.txt or Yong_file-module-2.txt
_file-module-3.txt or Yong_file-module-3.txt
.
.
.

提前致谢!

【问题讨论】:

今天第二次问这个问题。以下是如何提出一个可以得到答案的问题:***.com/help/how-to-ask。首先研究网络,找到回答的常见问题。尝试自己解决问题。 这能回答你的问题吗? unix.stackexchange.com/questions/569389/… 可能是写一个 C 程序或 Python 脚本 【参考方案1】:

最简单的方法是使用find、sed和xargs的组合。

find . -name '*.txt' | sed 'p;s/.*_file/Yong_file/' | xargs -n2 mv

这会在当前工作目录中查找文本文件,回显原始文件名 (p),然后是修改后的名称 (s/.*_file/Yong_file/),并将其全部提供给 mv 成对 (xargs -n2)。

【讨论】:

【参考方案2】:

如果你会使用 zsh,你可以做一个

 autoload zmv # Because zmv is not active by default
 zmv '????????????????????????????????????(*module*txt)' '_$1'

由于您想使用 bash,您可以从 zsh 中窃取它并在 bash 中使用它,如下所示:

zsh -c "autoload zmv; zmv '????????????????????????????????????(*module*txt)' '_$1'"

(这些应该是 36 个问号;最好你再数一遍,而不是盲目地复制这段代码)。

【讨论】:

@Yong:那请问你接受我的回答吗? 我是新手。让我弄清楚如何接受答案。 点击答案旁边的复选标记。见here【参考方案3】:

你可以像这样使用rename

rename --dry-run 's/.*_file/Yong_file/' *.txt

如果您使用的是 macOS,则可以使用 homebrew 安装 rename

brew install rename

【讨论】:

谢谢马克!这正是我正在寻找的。 .*_file 酷,请随意投票并接受它作为答案:-)【参考方案4】:

如果你使用 mac,你可以简单地通过 UI 试试这个: https://support.apple.com/en-us/guide/mac-help/mchlp1144/mac

或者,如果您想通过 CLI 尝试这些工作: https://www.howtogeek.com/423214/how-to-use-the-rename-command-on-linux/ (读自Renameing Multiple Files with mv

这也可能有帮助; linux的sed命令: https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/

还有另一篇***文章:bash substitute first character in every line

【讨论】:

感谢您的回复!我找不到一种方法来自动完成所有文件。基本上,我正在寻找如何从 CLI 替换所有这些文件的前 36 个字符。 @Yong 您可以签出 crontab 以获取自动化方式。我无法帮助您完全制作 36 个字符,但这篇 *** 文章可能会对您有所帮助:***.com/questions/10140213/… 另外我编辑了我的答案,所以请结帐。 感谢分享这些链接!

以上是关于如何从 CLI 快速重命名 macOS 或 linux 上的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 终端中批量重命名文件?

如何使用命令行界面(CLI)重命名 laravel 控制器?

macos 中目录重命名的意外行为(其他 posix 风格?)

如何使用命令重命名@Angular/cli 创建的服务

如何在 MacOS 中递归地重命名文件夹和文件

VBS 重命名一个文件夹内的全部文件