重命名文件 Bash 脚本 - 循环问题

重命名文件 Bash 脚本 - 循环问题

我正在尝试编写一个脚本来获取我的文件并重命名PT-1点2 例如。 testfile_pt-1_date.ts 此时脚本将正确重命名为文件并将其正确复制到指定文件夹。

我遇到的问题是是否有一个文件,例如。 testfile_pt_date.ts,该文件没有被重命名,而是被复制,这不是我想要的,我希望该文件被忽略,我不知道为什么 for do 循环接受一个文件其中,任何人都知道我哪里出了问题。

#! /bin/bash

file=$1
for file in *_pt-1_*.ts
do
echo "$1"    
a="$(echo $1 | sed s/_pt-1_/_pt2_/)"
cp "$1" "$HOME/SGTV/${a##*/}"
echo "$a"
done

答案1

我建议您使用专用工具,而不是循环rename。它更容易阅读、更快地编写并避免混乱。

rename 's/_pt-1_/_pt2_/' *_pt-1_*.ts


警告:rename一团糟在大多数发行版上。如果您使用的是 Debian 或其衍生版本,请确保rename安装了该软件包(而不仅仅是rename二进制文件)。

相关内容