更改多个(包括无)文件扩展名

更改多个(包括无)文件扩展名

如果我有一个文件目录,其中一些文件具有 .html 等扩展名,而一些文件没有扩展名,我如何将它们全部更改为 .txt 等?

答案1

相信这应该适合你(可能是使用 sed 更优雅的方法)。

for file in *; do
  base=`echo "${file%.*}"`
  mv -- "${file}" "${base}.txt"
done

答案2

不一定更优雅,但为了完整性,这里有一个sed解决方案:

for file in *; do
  mv "$file" "$(echo "$file" | sed 's/^\(.*\)\.\?.*$/\1.txt/')"
done

sed 位抓取文件名中最后一个点之前的所有内容,并用“.txt”替换点和后面的内容。如果文件名中没有点,则“.txt”将附加到整个文件名中。

变量周围的引号对于处理带有空格等的文件名非常重要,无论您使用哪种方法。

答案3

要在 shell 中重命名所有这些,将如下所示:

for file in *; do
  mv -- "${file}" "`basename -- "${file}"`.txt"
done

您可能需要使用或其他检查来测试类型file以确定扩展。

相关内容