我正在尝试编写一个脚本来获取我的文件并重命名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
二进制文件)。