我在目录和子目录中有文件,应该更改文件名,以便根据提供的参数将最后一个字符替换为数字或字符。我可以为数字做这件事但不会为角色发生。
例如。如果文件名是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/" {} ";"
这适用于数字,但我正在寻找如何使用单行命令对字符进行处理。
答案 0 :(得分:0)
使用rename
(perl函数)的简单解决方案
find . | rename -n -v 's/[A-Za-z0-9](?=\.)/5/'
-n
表示不采取行动
-v
表示对屏幕的详细信息
您可以直接使用renrem
程序实用程序直接,它比Perl中的重命名更强大。
我把这个程序写给自己因为我需要很多重命名或删除文件。