重命名具有各种扩展名的文件

Cra*_*155 3 bash awk rename sed

我有一个文件夹,其中包含各种随机文件扩展名以及根本没有扩展名.我希望从文件名中删除扩展名.我觉得我可能会走很长的路,但是我想避免使用两个列表和移动命令,因为它无法在飞行中进行.

我正在使用的代码将创建一个变量来保持扩展名,我试图用sed语法调用rename命令从文件中去除变量.

for i in `ls`; do 
        blah=$(echo $i |awk -F . '{if (NF>1) {print $NF}}')
        echo \.$blah
        rename 's/\.$blah//' $i  

done 
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:全局符号"$ blah"需要在(eval 1)第1行显式包名

此时我将使用前后列构建一个csv,并使用它来删除文件名,但为了将来的参考,我想知道如何实现这一点.

我看到有关使用重命名进行单个或几个扩展的大量帖子:

rename 's/.mp3//' *.mp3
Run Code Online (Sandbox Code Playgroud)

但由于不同扩展的数量......

Bir*_*rei 5

以下bash命令应该完成这项工作:

for f in *.*; do mv "$f" "${f%.*}"; done
Run Code Online (Sandbox Code Playgroud)