次のファイルがたくさんあります。
Brooklyn Nine-Nine S01 E01 [H264].mkv
Brooklyn Nine-Nine S01 E02 [H264].mkv
Brooklyn Nine-Nine S01 E03 [H264].mkv
Brooklyn Nine-Nine S01 E04 [H264].mkv
Brooklyn Nine-Nine S01 E05 [H264].mkv
Brooklyn Nine-Nine S01 E06 [H264].mkv
Brooklyn Nine-Nine S01 E07 [H264].mkv
Brooklyn Nine-Nine S01 E08 [H264].mkv
...
S01とE08の間のスペースが削除されるように名前を変更したいと思います。はい
Brooklyn Nine-Nine S01E08 [H264].mkv
すべてのスペースを削除するコマンドが見つかりました。
IFS="\n"
for file in *.mkv;
do
mv "$file" "${file/[[:space:]]}"
done
しかし、SxxとExxの間のスペースを削除したいと思います。
答え1
最も簡単な方法は、このrename
ツールを使用することです。このツールを使用すると、複数のファイル名を簡単に検索して変更できます。
rename [options] <expression> <replacement> <file>...
次のようにする必要があります。
rename " E0" E0 Brooklyn*.mkv
Debianに似たディストリビューションを使用している場合、コマンドはrename
代わりに異なる入力構文を使用してPerlスクリプトを呼び出すことができますutil-linux
。この場合、rename.ul
正しい構文を呼び出すツールを使用してください。Debian / Ubuntuの名前変更ユーティリティがCentOSなどの他のディストリビューションの名前変更ユーティリティと異なるのはなぜですか?
答え2
forループは次のように編集できます。
for file in *.mkv;
do
mv "$file" "${file//S01 E0/S01E0}"
done
または、rename
次のコマンドを使用します。
rename 's/S01 E0/S01E0/' *.mkv