我正在尝试创建一个 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
我做错了吗?非常感谢任何帮助。
最佳答案
这是对第一个示例的微不足道的更改:
cd "$directory"
# Rename all files to *.txt
for f in *
do
mv -- "$f" "${f%.*}.txt"
done
如果一个文件包含多个扩展名,这将只替换最后一个。要删除所有 扩展,请使用%%
代替%
。
关于linux - 使用 BASH 脚本重命名多个不同的文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292426/