用sed重命名多个文件

我怎样才能将Stargate SG-1 Season 01 Episode 01等文件重命名为“s01e01”? 可变编号当然。 我已经有这样的东西:

for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e "REGEX HERE")

我只需要sed命令,做我所需要的。

谢谢

不需要sed,试试这个:

 #!/bin/bash for f in *.mkv; do set -- $f mv "$f" s${4}e${6} done 

在行动:

 $ ls Stargate SG-1 Season 01 Episode 01.mkv $ ./l.sh $ ls s01e01.mkv 

GNU sed

 for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e 's/.*\(\S\+\)\s\+\S\+\s\(\S\+\)$/s\1e\2/') 

Awk对此也有好处

 for file in *.mkv; do mv "$file" $(awk '{print "s", $4, "e", $6}' <<<$file).mkv done 

我认为这不是一个问题sed 🙂

我会这样去重命名所有* .mkv文件:

ls *.mkv | awk '{print "mv \"" $0 "\" s" $4 "e" $6}' | sh

要么

ls *.mkv | awk '{print "\"" $0 "\" s" $4 "e" $6}' | xargs mv