使用 bash 修改拓展名和备份
技术分享|2023-5-11|最后更新: 2023-5-11
type
status
date
slug
summary
tags
category
icon
password
Property
May 11, 2023 04:22 AM
URL
 
最近买了一个课,里面有字幕文件,英文的字幕文件和中文的,分别是这样的
英文的拓展名是 .srt 结尾的,中文的是 _CN.srt 结尾的,视频软件是默认读取 .srt 结尾的,因为和视频的名字一样,但是我是想看中文字幕的,如果不修改我每次都需要去修改,这样的话就很麻烦,所以写了一个脚本来操作
 
#!/bin/bash # 打印欢迎消息 echo "欢迎使用 srt 文件处理脚本!" # 使用 globbing 模式获取所有 .srt 文件 srt_files=(*.srt) # 如果没有找到任何 .srt 文件,打印错误消息并退出脚本 if [ ${#srt_files[@]} -eq 0 ]; then echo "错误:没有找到任何 .srt 文件" exit 1 fi # 首先备份以 .srt 结尾但不是 _CN.srt 结尾的文件 for file in "${srt_files[@]}"; do if [[ "$file" =~ .srt$ ]] && ! [[ "$file" =~ _CN\.srt$ ]]; then cp "$file" "$file.bak" echo "已备份 $file 文件" fi done # 遍历所有 .srt 文件 for file in "${srt_files[@]}"; do # 如果文件名以 _CN.srt 结尾,将 _CN.srt 替换为空,并备份原文件 if [[ "$file" =~ _CN\.srt$ ]]; then cp "$file" "$file.bak" mv "$file" "${file/_CN.srt/.srt}" echo "已将 $file 文件名更改为 ${file/_CN.srt/.srt} 并备份原始文件" fi done # 打印脚本执行完成消息 echo "srt 文件处理脚本执行完成!"
  • #!/bin/bash:这是一个 shebang 行,它指定了脚本使用的 shell 解释器。在这个例子中,使用的是 bash 解释器。
  • echo "欢迎使用 srt 文件处理脚本!":这是一个输出语句,它会将括号内的字符串输出到终端。
  • srt_files=(*.srt):这个语句使用 globbing 模式获取所有以 .srt 结尾的文件,并将它们保存到一个数组中。
  • if [ ${#srt_files[@]} -eq 0 ]; then:这是一个 if 语句,它会检查数组 srt_files 的长度是否为零,如果是,则说明没有找到任何 .srt 文件。
  • cp "$file" "$file.bak":这个语句会将文件 $file 复制到 $file.bak
  • mv "$file" "${file/_CN.srt/.srt}":这个语句会将文件 $file 重命名为 ${file/_CN.srt/.srt}。在这个新名称中,所有的 _CN.srt 字符串都会被替换为 .srt 字符串。
  • echo "srt 文件处理脚本执行完成!":这是一个输出语句,表示脚本的执行已经完成。
 
ChatGPT会员充值说明cube 文件生成小工具