Linux命令为目录中的所有文件提供文件扩展名

Sim*_*Cat 3 linux bash

我想出了这个:

for i in *; 
do input=`echo $i|sed -e 's/[ ]/\\\ /g'`; 
output=`echo $input".mp3"`; 
mv $input $output; done
Run Code Online (Sandbox Code Playgroud)

它非常接近,但它抱怨:

mv:无效选项 - '\'

我不太明白为什么它不起作用如果我尝试回显$ input或$ output他们似乎都正确地逃避了文件名中的所有空格而已.

Bor*_*lid 9

find . -type f -exec mv "{}" "{}.mp3" \;

  • 这会更改子目录中的文件,这可能是也可能不是OP想要的.有问题的例子不会遍历dirs.限制为当前目录使用`-maxdepth`选项. (3认同)