2022年11月17日木曜日

シェルスクリプト備忘録 - 複数ファイルのファイル名一括変換 xargs

例えば、誤って

ZRAD_MyFriend.mp3   ZRAD_きっと忘れない.mp3

のように複数のファイルがあり、ファイル名を一括して変換したい時、xargs による並列処理を使うことで以下のように書ける。

 for i in ZRAD*; do echo $i ${i/ZRAD/ZARD} | xargs -n 2 mv; done

 

わかりやすくするため xargs の無い以下を実行すると

for i in ZRAD*; do echo $i ${i/ZRAD/ZARD};done 

ZRAD_MyFriend.mp3   ZARD_きっと忘れない.mp3 ZRAD_MyFriend.mp3   ZARD_きっと忘れない.mp3

と変換前、変換後のファイル名が合計4つ表示される。これを最初のように xargs のオプション n 2 によって2つずつ mv に渡してやることにより

mv ZRAD_MyFriend.mp3   ZARD_きっと忘れない.mp3

mv ZRAD_MyFriend.mp3   ZARD_きっと忘れない.mp3

を実行することになる。

ただし mv を使うとファイルを削除する恐れがあるので、慣れないスクリプトを作るときは注意。

 

2022年11月14日月曜日

MSYS2 - Windows10でBashを使う

 かつではCygwinを使っていたが、改めて何にしようかと迷ったが、MSYS2を使うことにした。

https://www.msys2.org/


こちらを参考にさせて頂いた。

https://m-lab-tech.com/windows-cool-bash/