【发布时间】:2022-01-14 23:53:29
【问题描述】:
如何递归重命名
filename9_123.txt
filename10_124.txt
filename11_125.txt
到
123.txt
124.txt
125.txt
【问题讨论】:
标签: macos command-line rename
如何递归重命名
filename9_123.txt
filename10_124.txt
filename11_125.txt
到
123.txt
124.txt
125.txt
【问题讨论】:
标签: macos command-line rename
我可以使用红宝石吗?应该与默认安装的版本一起使用。注意:如果名称冲突,将覆盖文件。
ruby -e "require 'pathname';Pathname.glob('*_*.txt')
.each {|f| f.rename f.basename.to_s.split('_').last }"
您可能需要删除换行符,这只是为了更好地格式化。
如果“递归”是指在子目录中:
ruby -e "require 'pathname';Pathname.glob('**/*_*.txt')
.each {|f| f.rename(f.dirname / f.basename.to_s.split('_').last) }"
此版本失败,它将覆盖现有文件:
ruby -e "require 'pathname';Pathname.glob('**/*_*.txt')
.to_h {|f| [f, f.dirname / f.basename.to_s.split('_').last] }
.each {|from, to| fail(to) if to.exists?; from.rename to }"
【讨论】: