我需要对不同学生的一些源代码进行评分。提交过程是通过 Blackboard 进行的,它会在文件名后附加一堆不必要的内容。以下是示例:
Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz
我想将此文件(及所有其他文件)重命名为:
adunn-helloworld.tar.gz
我如何在 Bash 脚本中执行此操作?
答案1
您可以使用 shell 参数扩展:
$ s="Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz"
$ echo "${s##*_}"
adunn-helloworld.tar.gz
使用循环重命名文件:
for f in *.gz; do
mv "$f" "${f##*_}"
done
或者,您可以使用prename
(perl 分发的一部分):
rename 's/.*_//' *.gz