我正在尝试创建一个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
我是不是错了?非常感谢任何帮助。
答案 0 :(得分:1)
对第一个例子来说,这是一个微不足道的变化:
cd "$directory"
# Rename all files to *.txt
for f in *
do
mv -- "$f" "${f%.*}.txt"
done
如果文件包含多个扩展名,则只会替换最后一个扩展名。要删除所有扩展程序,请使用%%
代替%
。