答え1
私たちが言うと「サンプル名です」現在のファイル名の上の文字列です。.mkv
つまり、与えられた
$ cat file.txt
Taken S01 E01
74857.mkv
Taken S01 E02
74858.mkv
あなたが本当に欲しい
74857.mkv > 撮影 S01 E01.mkv
74858.mkv > 撮影 S01 E02.mkv
その後、GNUを使用してparallel
次のようにしますmv
。
parallel -N2 echo mv -- {2} {1}.mkv < file.txt
echo
正しいコマンドを書いていると確信している場合は削除してください。
答え2
私があなたなら、これを小さなバッチで行い、コピーでテストしますが、このようなものはあなたに適しています。
while read n; do read f; mv $f "$n.${f##*.}"; done < file
始める前に出力を確認することをお勧めします。
while read n; do read f; echo mv $f "$n.${f##*.}"; done < file > checkfile
名前が変更されたファイルにエラーがないことを確認してください。
満足するまでコピーを安全に保管できるようにコピーを作成するのに十分なスペースと時間があれば、より安全です。
while read n; do read f; cp $f "/a/safe/location/$n.${f##*.}"; done < file
ノート
mv
プロセスを元に戻すには、コマンドで名前の順序を変更します。
mv "$n.${f##*.}" $f
答え3
そしてperl
:
perl -lne '$dst = "$_.mkv"; $src = <>; chomp $src; rename $src, $dst
or warn "$src -> $dst: $!\n"' your-file
そしてzsh
:
zmodload zsh/files # to get a builtin mv
while IFS= read -ru3 dst && IFS= read -ru3 src; do
mv -- "$src" "$dst.mkv"
done 3< your-file