基于原始文件创建/重命名新文件的 MAC 脚本:防止将原始文件扩展名添加到文件名 [重复]

mac script that creates/renames new file based on original file: prevent from adding original file extension to filename [duplicate]

提问人:a. e. 提问时间:11/17/2023 最后编辑:tripleeea. e. 更新时间:11/17/2023 访问量:28

问:

这是一个尴尬的情况,但我会尽力而为。我有一个脚本,旨在根据运行该文件的目录中预先存在的文件生成某种类型的文件。每次我这样做时,它都可以工作,但是具有不同扩展名的输出文件仍然在文件名中包含原始扩展名。 例如:

  • BGW公司file0001.mpg
  • 新增功能:file0001.mpg.nfo

如何防止终端将原始扩展名打印到其预期扩展名后面的新文件名中?

代码如下;

# syntax check (must have only one parameter: input directory)

if [ -z "$1" ];
then echo "Syntax: $0 <input directory>"
    exit 1
fi

# change to the requested directory and inform the user of such

cd "$1"
echo "Preparing to loop through files in the following directory as requested: "
pwd

# create new directory called "metadata" and inform user

echo "Creating new MI-Files folder within the requested directory..."
mkdir "$1"/MI-Files

# begin creating MediaInfo text outputs from all files in directory and
# placing results in the MI-Files directory

echo "Creating MediaInfo text files..."
COUNTER=0
for i in *.*; do

#   NAME=${i%.*}
    COUNTER=$(("$COUNTER"+1));
    mediainfo "$i">./MI-Files/"$i".nfo;
done

# move metadata directory to the user's desktop

V_HOME=$HOME
mv ./metadata "$V_HOME/Desktop/MI-Files"
macOS 终端 SH

评论

0赞 Gordon Davisson 11/17/2023
@triplee 这是针对批处理脚本的,其语法非常不同。Ture,它使用仅 zsh 扩展选项,但在 macOS 上,脚本的默认 shell 是 bash。
0赞 Gordon Davisson 11/17/2023
尝试(请参阅“在 bash 中重命名文件名”)。实际上,注释掉的逗号完成了大部分工作(它删除了原始扩展名,但不添加新扩展名)。顺便说一句,您可能应该检查以确保原始文件实际上是媒体文件(尤其是还不是 .nfo 文件),否则它可能会做一些愚蠢的事情。也许检查是否已经有一个 .nfo 文件,以防发生冲突。最后,行尾不需要分号。mediainfo "$i" >./MI-Files/"${i%.*}.nfo"NAME=${i%.*}
0赞 tripleee 11/17/2023
哦,我的错,我看了很多重复项,最终选错了。毋庸置疑,这是一个非常常见的常见问题解答,并且有几十个重复项。
0赞 tripleee 11/17/2023
你没有透露你正在使用哪个 shell,但一些 stackoverflow.com/questions/1224766/ 答案......甚至可以移植到 POSIXsh
0赞 a. e. 11/17/2023
是的,对不起,我确定这是一个重复的,我只是真的不确定如何找到其他问题或使用什么语言。我尝试了几次搜索,但没有找到任何东西。感谢大家的投入,尝试一下这些东西。

答: 暂无答案