我在目录和子目录中有文件,应更改文件名,以便根据提供的参数将最后一个字符替换为数字或字符。我可以为数字做这件事,但不能为一个角色做。
例如。如果文件名是 20170504ABCDXXXYYY6.xml
或 20170504CFLFXXXYYY6.cfl.bz2
.
如果我写命令 ./updateLastCharacter 5
, 文件名应该是 20170504ABCDXXXYYY5.xml
或 20170504CFLFXXXYYY5.cfl.bz2
.
如果命令是./updateLastCharacter A
, 文件名应该是 20170504ABCDXXXYYYA.xml
或 20170504CFLFXXXYYYA.cfl.bz2
.
我是 shell 脚本的新手。我为实现它做了很多尝试,但我能做的是:
find $directory -exec rename "s/[0-9].xml/$newNumber.xml/;s/[0-9].cfl/$newRevisionNumber.cfl/" {} ";"
这适用于数字,但我正在寻找如何使用单行命令为字符执行此操作。
最佳答案
重命名
(perl 函数)的简单解决方案
找到 . |重命名 -n -v 's/[A-Za-z0-9](?=\.)/5/'
-n
表示没有 Action
-v
表示在屏幕上显示冗长
你可以使用 renrem
直接程序实用程序比在 Perl 中重命名更强大。
我自己写了那个程序,因为我需要很多东西来重命名或删除文件。
关于linux - 更新文件名最后一个字符的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225985/