linux - 更新文件名最后一个字符的 Shell 脚本

标签 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/" {} ";"

这适用于数字,但我正在寻找如何使用单行命令为字符执行此操作。

最佳答案

重命名(perl 函数)的简单解决方案

找到 . |重命名 -n -v 's/[A-Za-z0-9](?=\.)/5/'

-n表示没有 Action
-v 表示在屏幕上显示冗长

enter image description here


你可以使用 renrem 直接程序实用程序比在 Perl 中重命名更强大。
我自己写了那个程序,因为我需要很多东西来重命名或删除文件。

enter image description here

关于linux - 更新文件名最后一个字符的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225985/

相关文章:

unix - 时区数据库文件格式问题

c++ - 使用 boost :serialization in c++? 时如何解决 "sizeof"错误

linux - sed:如何用可变字符替换一行?

python - 在 python 中而不是在 shell 中使用 os.system 时出错

bash - 此命令只能由 root 使用

linux - 如何搜索包含某种模式的文件,然后在所有这些文件中搜索另一种模式?

c++ - 有没有办法在 linux 中编辑 Windows C++ exe 文件

python - 在 Ubuntu 上安装 Anaconda,出现 BrokenProcessPool 错误

linux - 在 linux 系统上的 X86 体系结构的程序集中测试 db "Hello world"是什么意思

linux - 使用virsh和qemu创建虚拟机有什么区别?