用于更新文件名的最后一个字符的Shell脚本

时间:2017-04-05 08:34:51

标签: linux shell unix

我在目录和子目录中有文件,应该更改文件名,以便根据提供的参数将最后一个字符替换为数字或字符。我可以为数字做这件事但不会为角色发生。

例如。如果文件名是20170504ABCDXXXYYY6.xml20170504CFLFXXXYYY6.cfl.bz2

如果我编写命令./updateLastCharacter 5,文件名应为20170504ABCDXXXYYY5.xml20170504CFLFXXXYYY5.cfl.bz2

如果命令为./updateLastCharacter A,则文件名应为20170504ABCDXXXYYYA.xml20170504CFLFXXXYYYA.cfl.bz2

我是shell脚本的新手。我尝试了很多,但我能做的是:

find $directory -exec rename "s/[0-9].xml/$newNumber.xml/;s/[0-9].cfl/$newRevisionNumber.cfl/" {} ";"

这适用于数字,但我正在寻找如何使用单行命令对字符进行处理。

1 个答案:

答案 0 :(得分:0)

使用rename(perl函数)的简单解决方案

find . | rename -n -v 's/[A-Za-z0-9](?=\.)/5/'

-n表示不采取行动 -v表示对屏幕的详细信息

enter image description here

您可以直接使用renrem程序实用程序直接,它比Perl中的重命名更​​强大。
我把这个程序写给自己因为我需要很多重命名或删除文件。

enter image description here