扩展名后重命名所有文件

时间:2019-01-21 13:59:43

标签: linux shell

是否可以编写一个脚本来重命名扩展名之后的所有文件?

文件夹中的示例为:

hello.txt-123ahr
bye.txt-56athe
test.txt-98hg12

我想要输出:

hello.txt
bye.txt
test.txt

1 个答案:

答案 0 :(得分:3)

如果只想从短划线中删除所有内容,则可以使用参数扩展:

#!/bin/bash
for file in *.txt-* ; do
    mv "$file" "${file%-*}"
done

${file%-*}的意思是“从最后一个破折号开始,从$file删除”。如果要从第一个破折号开始,请使用%%

请注意,如果某些文件的前导部分相同,则可能会覆盖它们,例如hello.txt-123abchello.txt-456xyz