我该如何将类似于Stargate SG-1 Season 01 Episode 01
这样的文件名称重命名为"s01e01"呢?当然,编号是可变的。我已经有了以下代码:
for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e "REGEX HERE")
我只需要适合我需求的sed命令即可。
谢谢
我该如何将类似于Stargate SG-1 Season 01 Episode 01
这样的文件名称重命名为"s01e01"呢?当然,编号是可变的。我已经有了以下代码:
for file in *.mkv; do mv "$file" "$(echo "$file" | sed -e "REGEX HERE")
我只需要适合我需求的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
sed
。你怎么知道他不需要 sed
?这个例子可能只是一个特例,他可能还有很多其他需要使用 sed
的情况。此外,你的回答依赖于 bash
,他可能正在使用另一个 shell。 - fiatjaffor file in *.mkv; do mv "$file" "$(echo "$file" | sed -e 's/.*\(\S\+\)\s\+\S\+\s\(\S\+\)$/s\1e\2/')
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