繁体   English   中英

如何从 CLI 快速重命名 macOS 或 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
.
.
.

提前致谢!

您可以像这样使用rename

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

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

brew install rename

最简单的方法是使用findsedxargs的组合。

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

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

如果你使用 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/

和另一篇stackoverflow文章: bash 替换每行中的第一个字符

如果你会使用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 个问号;最好你再数一遍,而不是盲目地复制这段代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM