18. Tokaido LUG at Nagoya
September 17th
, 2016
ハマった事例について
● 元ファイルはこんな感じ(重複分は消してます)
$ ls -1
01 Off the Ground 1.mp3
02 Looking for Changes 1.mp3
03 Hope of Deliverance 1.mp3
04 Mistress and Maid 1.mp3
05 I Owe It All to You 1.mp3
06 Biker Like an Icon 1.mp3
07 Peace in the Neighbourfood 1.mp3
08 Golden Earth Girl 1.mp3
09 The Lovers that Never Were 1.mp3
10 Get Out of the Way 1.mp3
11 Winedark Open Sea 1.mp3
12 Cmon People 1.mp3
19.
20. Tokaido LUG at Nagoya
September 17th
, 2016
表示はうまくいくんだが...
● 「echo」を「mv」にしてもうまくいかない
$ for i in * 1.mp3 ; do echo "${i/ 1.mp3/.mp3}" ; done
01 Off the Ground.mp3
02 Looking for Changes.mp3
03 Hope of Deliverance.mp3
04 Mistress and Maid.mp3
05 I Owe It All to You.mp3
06 Biker Like an Icon.mp3
(snip)…..
$ for i in * 1.mp3 ; do mv -f $i `echo "${i/ 1.mp3/.mp3}"` ;
done
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
$
21. Tokaido LUG at Nagoya
September 17th
, 2016
考えてみれば当たり前か
● mv $i... の時点でスペースが含まれるので
移行元ファイル自体が認識できない
● 変数$i自体にスペースが含まれなければよい
● さて、どうする...
– ぐぐると、エキスパートの方が答を出していた
http://nullpopopo.blogcube.info/2013/07/filename_replace.html
22. Tokaido LUG at Nagoya
September 17th
, 2016
変数の設定に手心を加えるのがミソ
● forループで回す変数から空白を置き換え実施
$ for A in $(ls | grep " " | sed -e s/" "/_/g) ;
do mv "$(echo $A | sed -e s/_/" "/g)" $A ; done
$ ls -1
01_Off_the_Ground_1.mp3
02_Looking_for_Changes_1.mp3
03_Hope_of_Deliverance_1.mp3
04_Mistress_and_Maid_1.mp3
05_I_Owe_It_All_to_You_1.mp3
06_Biker_Like_an_Icon_1.mp3
07_Peace_in_the_Neighbourfood_1.mp3
08_Golden_Earth_Girl_1.mp3
09_The_Lovers_that Never_Were_1.mp3
10_Get_Out_of_the_Way_1.mp3
11_Winedark_Open_Sea_1.mp3
12_Cmon_People_1.mp3
23. Tokaido LUG at Nagoya
September 17th
, 2016
邪魔な空白がなければあとは楽
● sedを駆使して直していきます
$ for i in *_1.mp3 ;
do mv $i "$(echo $i | sed -e s/_1.mp3/.mp3/)" ; done
$ for i in *.mp3 ;
do mv $i "$(echo $i | sed -e s/_/-/)" ; done
$ for B in $(ls | grep _ ) ;
do mv $B "$(echo $B | sed -e s/_/" "/g )" ; done
$ ls -1
01-Off the Ground.mp3
02-Looking for Changes.mp3
03-Hope of Deliverance.mp3
04-Mistress and Maid.mp3
05-I Owe It All to You.mp3
06-Biker Like an Icon.mp3
(snip)….
24. Tokaido LUG at Nagoya
September 17th
, 2016
シェルスクリプト化するにはどうする?
● ファイル名をいじるハナシなので厄介
● 本来のファイル名を示したリストを使う
● 最初っからスペースを禁止したほうが楽?
– それでは進歩もないよね...(ぉ
● シェルスクリプトの要素って
– テキストファイルの中身をいじる
– ファイル名などをいじる
– バイナリファイルをいじる(外部フィルタなど)
● ま、とにかくちゃんと勉強したいな...と。
25. Tokaido LUG at Nagoya
September 17th
, 2016
思い切って買ったんですがまだ読み切れず
入門UNIXシェルプログラミング
―シェルの基礎から学ぶUNIXの世界
Bruce Blinn 著 / 山下 哲典 訳
ISBN 978-4797321944
26. Tokaido LUG at Nagoya
September 17th
, 2016
こっちはカルく読めるのでおすすめかな
UNIXという考え方
Mike Gancarz 著 / 芳尾 桂 訳
ISBN 978-4274064067