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
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