如何在 Linux 中为脚本文件添加 .sh 扩展名

如何在 Linux 中为脚本文件添加 .sh 扩展名

我有十几个没有扩展名的文件,我需要.sh向所有文件添加一个 Bourne-Again shell 脚本。如何在不使用 sed、awk 的情况下实现这一点……

我像这样定位文件:

file * | grep "Bourne-Again shell"

使用命令 xargs 如何为上面生成的文件添加扩展名?如果可能,必须在管道中包含文件命令来定位文件。

答案1

你可以这样做:

for f in *
    do
    grep "Bourne-Again shell" <(file "$f") >/dev/null && echo mv "$f" "$f".sh
    done

在包含脚本文件的目录中运行上述代码,然后消除 echo当对输出满意时,进行实际的重命名。


注意:

xargs并不是最适合此操作的,但如果你坚持的话,可以像这样以丑陋的方式完成:

file * | grep "Bourne-Again shell" | cut -f 1 -d ' ' | rev | cut -c 2- | rev | xargs -I {} -n1 echo mv {} {}.sh

在包含脚本文件的目录中运行上述代码,然后消除 echo当对输出满意时,进行实际的重命名。

答案2

您可以使用mv来更改文件名。

例如mv $FILENAME $FILENAME.sh

file * | grep "Bourne-Again shell" | while read FILE; do mv "${FILE}" "${FILE}.sh"; done

相关内容