如何在 macOS 上或从 CLI linux 快速重命名我的文件?
How to quickly rename my files on macOS or linux from CLI?
这是我的源文件。
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
.
.
.
提前致谢!
如果您使用 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/
(阅读 使用 mv 重命名多个文件)
这也可能有帮助; linux 的 sed 命令:
https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/
和另一篇 Whosebug 文章:bash substitute first character in every line
您可以这样使用 rename
:
rename --dry-run 's/.*_file/Yong_file/' *.txt
如果您使用的是 macOS,则可以使用 homebrew 安装 rename
:
brew install rename
如果你想使用 zsh,你可以做一个
autoload zmv # Because zmv is not active by default
zmv '????????????????????????????????????(*module*txt)' '_'
因为你想使用 bash,你可以从 zsh 窃取它并在 bash 中使用它,如下所示:
zsh -c "autoload zmv; zmv '????????????????????????????????????(*module*txt)' '_'"
(这应该是36个问号,最好再数一遍,不要盲目照搬这段代码)
最简单的方法是结合使用 find, sed and xargs.
find . -name '*.txt' | sed 'p;s/.*_file/Yong_file/' | xargs -n2 mv
这会在当前工作目录中找到文本文件,回显原始文件名 (p
),然后是修改后的名称 (s/.*_file/Yong_file/
),并将其全部提供给 mv
对 (xargs -n2
).
这是我的源文件。
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
.
.
.
提前致谢!
如果您使用 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/ (阅读 使用 mv 重命名多个文件)
这也可能有帮助; linux 的 sed 命令: https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/
和另一篇 Whosebug 文章:bash substitute first character in every line
您可以这样使用 rename
:
rename --dry-run 's/.*_file/Yong_file/' *.txt
如果您使用的是 macOS,则可以使用 homebrew 安装 rename
:
brew install rename
如果你想使用 zsh,你可以做一个
autoload zmv # Because zmv is not active by default
zmv '????????????????????????????????????(*module*txt)' '_'
因为你想使用 bash,你可以从 zsh 窃取它并在 bash 中使用它,如下所示:
zsh -c "autoload zmv; zmv '????????????????????????????????????(*module*txt)' '_'"
(这应该是36个问号,最好再数一遍,不要盲目照搬这段代码)
最简单的方法是结合使用 find, sed and xargs.
find . -name '*.txt' | sed 'p;s/.*_file/Yong_file/' | xargs -n2 mv
这会在当前工作目录中找到文本文件,回显原始文件名 (p
),然后是修改后的名称 (s/.*_file/Yong_file/
),并将其全部提供给 mv
对 (xargs -n2
).