我想将目录中的所有文件从 *.ts 重命名为 *.mkv

我想将目录中的所有文件从 *.ts 重命名为 *.mkv

重命名目录中 .ts 文件中的所有文件 我的 echo 命令有效,但如果我尝试将其设为新变量则无效。

#!/bin/sh
for file in "${1}"/*.ts; do
  echo ${file} | sed -e 's|.ts|.mkv|'
  new_name=${file} | sed -e 's|.ts|.mkv|'
done

答案1

最简单的解决方案是告诉您将分配更改为:

new_name=$( echo ${file} | sed -e 's|.ts|.mkv|' )

但更好的解决方案是:

new_name="${file%.ts}.mkv"

答案2

find . -maxdepth 1 -type f -name '*.ts' -exec rename .ts .mkv {} "+"

在包含文件的目录中运行它.ts

答案3

rename就是您要找的:

rename '.ts' '.mkv' "${1}/*.ts"

答案4

#!/bin/sh
for file in "${1}"/*.ts; do
   mv "${file}" "$(basename "${file}").mkv"
done

相关内容