Osa*_*IRY 11 linux rename regex
我有一组我想一直重命名的文件,这些文件被命名为
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
Run Code Online (Sandbox Code Playgroud)
我希望它们是小写的,yyyymmdd,.log 扩展名
"system.20090101.log"
"something.20090101.log"
Run Code Online (Sandbox Code Playgroud)
Osa*_*IRY 15
我曾经编写 perl 脚本来做到这一点,直到我发现了 rename 命令。
它接受一个 perl 正则表达式来进行重命名:
为此,我只输入了两个命令:
rename 's/(\w+)-(\w+)-(\d\d)-(\d{4})-NODATA.txt\$1.$4$3$2.log$//' *
rename 'y/A-Z/a-z/' *.log
Run Code Online (Sandbox Code Playgroud)
但是,对于某些发行版,rename没有此功能(请参阅其手册页),您可能必须安装perl-rename或prename.
mmv是一个标准的 linux 实用程序,用于移动/重命名多个文件。对于大多数发行版,它都可以从 repos 中获得。对于上面的示例,您可以执行以下操作:
mmv '*-Log-*-*-*-NODATA.txt' '#l1.#4#3#2.log'
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请阅读这篇debaday 文章或手册页。
小智 6
由于我没有重命名命令,因此我依赖于此:
for myfile in /my/folder/*; do
target=$(echo $myfile|sed -e 's/foo/bar/g')
mv "$myfile" "$target"
done
Run Code Online (Sandbox Code Playgroud)
renameutil 不是很“标准”。每个发行版都附带不同的rename工具。例如,在 Gentoo 上,rename来自sys-apps/util-linux包并且不支持正则表达式。
Hamish Downer建议mmv,它似乎很有用,特别是在脚本内部使用。
另一方面,对于一般情况,您可能需要renameutils。它有qmv和qcp命令,它将打开您选择的文本编辑器(我的偏好:Vim)并允许您在那里编辑目标文件名。保存并关闭编辑器后,qmv/qcp将进行所有重命名。
双方mmv并qmv都足够聪明,重命名以正确的顺序文件,并检测圆形重命名,并在必要时会自动创建一个临时文件。
| 归档时间: |
|
| 查看次数: |
25317 次 |
| 最近记录: |