如果我有一个文件目录,其中一些文件具有 .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
以确定扩展。