用sed重命名多个文件

时间:2013-06-16 20:49:26

标签: linux sed rename

如何将标题为Stargate SG-1 Season 01 Episode 01的文件重命名为“s01e01”?当然可变编号。 我已经有类似的东西:

  

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

我只需要执行我需要的sed命令。

由于

4 个答案:

答案 0 :(得分:9)

不需要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

答案 1 :(得分:3)

GNU sed

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

答案 2 :(得分:2)

Awk也适合这个

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

我认为这不是sed的问题:)

答案 3 :(得分:0)

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

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

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