如何通过shell脚本修剪文件的尾号?

如何通过shell脚本修剪文件的尾号?

我有如下文件。总共有四个文件:

cert1.pem chain1.pem fullchain1.pem privkey1.pem

我想修剪每个文件的尾号(1此处)。如何使用 shell 脚本自动处理它?我熟悉一些命令,但我认为我不擅长编写shell脚本来处理这种批处理。

答案1

如果尾随数字是单个数字,并且它们都是.pem文件,您可以使用参数扩展来去除数字和扩展名,然后替换扩展名:

for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

%%参数扩展的工作原理是删除任何单个字符 () 的最长尾随匹配 ( ?),后跟.pem;完成后,我们手动.pem在末尾添加回 。

请注意,这也会重命名文件,例如certX.pemfullchain-.pem,因为该?字符会扩展为任何单个字符。

在上面的示例中,这变得更安全,因为我已经手动列出了要重命名的文件。您也可以使用类似的方法:

for file in *1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

...它显式地循环遍历1.pem名称末尾带有 的文件。

设置:

$ ls
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem

执行:

$ for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
  do 
    mv "$file" "${file%%?.pem}.pem"
  done

结果:

$ ls
cert.pem  chain.pem  fullchain.pem  privkey.pem

相关内容