重命名文件。(其实,也就这一个功能)
$ go install github.com/daqing/rename@latest
a. 把 good.txt
重名为 bad.txt
:
$ rename good.txt bad
b. 把 good.markdown
重命名为 good.md
$ rename good.markdown .md
c. 把 /var/log/
目录下的 日志文件,批量修改为 .backup
后缀:
$ find /var/log -name '*.log' | xargs -I{} rename {} .backup
https://github.com/daqing/rename
求 Star :-)
写起来的确复杂很多,我因为写 ruby 多,然后学的很慢,估计自己学了至少五回,今年才拿来正式写东西了。主要前阵子因为一个项目用 go 打包成 exe 后,给客户安装,然后他们装了 360,360 一直报毒,最后用 rust 改写了才好了。
感觉有点多余啊,既然这个工具都需要用 find
和 xargs
命令,那为啥不用 mv
命令来做这个批量改名动作?
find /path/to/directory -type f -name "*.md" -exec mv {} {}.backup \;
find /path/to/directory -type f -name "*.md" -exec mv {} {}.backup \;
这个命令,会把 foo.md
重命名为 foo.md.backup
,而不是 foo.backup
这样:
find . -type f -name "*.md" -exec bash -c 'mv "$0" "${0%.md}.backup"' {} \;
这个是 Wrap 的 AI 给的建议:
$ find /var/log -name '*.log' | xargs -I{} rename {} .backup
$ find /var/docs -type f -name "*.md" -exec bash -c 'mv "$0" "${0%.md}.backup"' {} \;
并没有,我后来发现,只要隐藏了 cmd 窗口,这个 360 就很容易报毒,后来在 v2 上看有人说,现在 go 写的编译成 exe 特别容易被 360 这些报毒。
用 zmv
把 /path/to/directory
目录(递归地)下的 *.md
文件重名为 *.backup
:
zmv '(**)/(*).md' '$1$2.backup'
dry-run 方式:
zmv -n '(**)/(*).md' '$1$2.backup'
复制而不是重命名:
zmv -p cp '(**)/(*).md' '$1$2.backup'