把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀更改为“.shell”

今天参加了一场面试,有道笔试题,把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀更改为“.shell”。我当时想到的是用shell脚本解决,思路是先找到所有后缀为.sh的文件,然后截取文件名及路径部分,使用mv命令重命名。但是我当时写的有点问题,下面是修改的版本。

#!/bin/bash

find ./ -name "*.sh" | awk -F '.sh' '{print $1}' | while read filename
do
    mv $filename.sh $filename.shell
done

补充更新:查了下资料,发现有个rename命令更加快捷,之前没有用过,用法还挺简单的

# 修改当前目录(不包含子目录)下的文件
rename .sh .shell *.sh

# 修改当前目录(包含子目录)下的文件
rename .sh .shell $(find ./ -name "*.sh")
原文地址:https://www.cnblogs.com/CharrammaBlog/p/13812395.html