linux - 使用逻辑重命名文件的脚本

标签 linux bash shell scripting

有人非常热心地帮助我开始编写用于重命名 PDF 文件的批量重命名脚本。

如您所见,我需要添加一些逻辑来阻止以下情况的发生——例如向重复的文件名添加一个唯一编号?

rename 's/^(.{5}).*(\..*)$/$1$2/' *

rename -n 's/^(.{5}).*(\..*)$/$1$2/' *
Annexes 123114345234525.pdf renamed as Annex.pdf
Annexes 123114432452352.pdf renamed as Annex.pdf

希望这是有道理的?

谢谢

最佳答案

for i in *
do
    x=''                     # counter
    j="${i:0:2}"             # new name
    e="${i##*.}"             # ext
    while [ -e "$j$x" ]      # try to find other name
    do
        ((x++))              # inc counter
    done
    mv "$i" "$j$x"           # rename
done

之前

$ ls
he.pdf  hejjj.pdf  hello.pdf  wo.pdf  workd.pdf  world.pdf

之后

$ ls
he.pdf  he1.pdf  he2.pdf  wo.pdf  wo1.pdf  wo2.pdf

关于linux - 使用逻辑重命名文件的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9499960/

相关文章:

linux - 在expect环境中使用if条件检查退出代码

linux - 如何恢复被覆盖的 bash 配置文件

java - 如何在 ubuntu 启动时启动 java (.jar) 应用程序

python - 当我在 Bash 中有一系列命令时,如何重定向标准输入/标准输出?

linux - 为什么 bash 不会因短路命令序列中的错误而停止?

ruby - 在 shell 命令失败时引发异常?

linux - 如何在没有编辑器的情况下将变量 append 到 Shell 文档

linux - 使用访问 token 的 git pull,使用用户名/密码的 git push

python - 在 Linux 上安装 SimpleGUICS2Pygame

javascript - Nodejs-legacy 可用于 Fedora 23 吗?