如何使用sed更改文件扩展名?

ant*_*boa 3 linux bash sed

我要做一个sed线(也使用Linux管道)来改变文件扩展名,所以我可以做某种mv *.1stextension *.2ndextension类似mv *.txt *.c.问题是我不能使用批处理或for循环,所以我必须使用管道和sed命令来完成所有操作.

CS *_*Pei 9

你可以使用字符串操作

filename="file.ext1"
mv "${filename}" "${filename/%ext1/ext2}"
Run Code Online (Sandbox Code Playgroud)

或者,如果您的系统支持,您可以使用rename.

更新

你也可以这样做

mv ${filename}{ext1,ext2}
Run Code Online (Sandbox Code Playgroud)

这被称为大括号扩展

  • @ user2113403:`for*in*.1stextension; 做mv"$ {filename}""$ {filename /%1stextension/2ndextension}"; 完成`将为一堆文件做.不需要`sed`. (2认同)

cho*_*ban 5

sed用于操作文件的内容,而不是文件名本身.我的建议:

rename 's/\.ext/\.newext/' ./*.ext
Run Code Online (Sandbox Code Playgroud)

或者,这个现有的问题应该有所帮助.