我正在尝试在Mac终端上执行此操作
我想删除文件名第一个点之后的所有元素,然后在末尾添加扩展名。
假设我有:file1.some.stuff.mp3 file2.other.stuff.stuff.mp3 file3.some.thing.mp3
我在文件名file4.one.two.three.four.mp3
中可以附加n项的位置
但是我只对名字和结尾的扩展名感兴趣
并且我想以以下结尾:file1.mp3 file2.mp3 file3.mp3 file4.mp3
我的所有文件都在同一文件夹中。
只要确保文件名至少有一个.
,在.
前后都有非空字符串,这是简单的参数扩展问题。
for f in file1.some.stuff.mp3 file2.other.stuff.stuff.mp3 file3.some.thing.mp3 file4.one.two.three.four.mp3; do
echo "${f%%.*}.${f##*.}"
done
产生
file1.mp3
file2.mp3
file3.mp3
file4.mp3
在文件退出的目录中,使用类似
for f in *.mp3; do
迭代所有MP3文件。
使用bash变量替换,您可以实现以下目标:
for i in file1.some.stuff.mp3 file2.other.stuff.stuff.mp3 file3.some.thing.mp3
do
echo "${i/.*./.}"
done
[${i/.*./.}
表示将.*.
替换为.