使用BASH脚本重命名多个不同的文件扩展名

时间:2017-09-19 05:24:36

标签: linux bash unix

我正在尝试创建一个bash脚本,其中包含一个包含所有不同类型扩展名的文件(大约500个文件)(不严重,如30种不同类型的扩展名),我希望摆脱所有扩展名,并用 .txt

替换它们

我一直在寻找一段时间,并且只能找到获取指定扩展名的示例,并将其更改为另一个指定的扩展名。 喜欢 png - > jpg ,或 .doc - > .TXT

以下是我发现的一个例子:

# Rename all *.txt to *.text
for f in *.txt; do 
mv -- "$f" "${f%.txt}.text"
done

这样可行,但只有当你从 .txt 转到 .text 时,我才会使用多个不同的扩展程序。

我目前的代码是:

directory=$1
for item in $directory/*
do
echo mv -- "$item" "$item.txt";
done

这会将.txt附加到它们上面,但遗憾的是我仍然保留了之前的附加内容。例如。 filename.etc.txt filename.bla.txt

我是不是错了?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

对第一个例子来说,这是一个微不足道的变化:

cd "$directory"
# Rename all files to *.txt
for f in *
do 
    mv -- "$f" "${f%.*}.txt"
done

如果文件包含多个扩展名,则只会替换最后一个扩展名。要删除所有扩展程序,请使用%%代替%