第 2 回 - フィルタ,シェルスクリプトの基礎(2)

[10/13, 2009 H.Aman]
67x27(1669bytes)   67x27(1669bytes) 【例題 3】

課題 2-1

カレントディレクトリに置いてあるファイルのうち, 拡張子が .JPG となっているものを .jpg に変更するシェルスクリプト convertJPG.sh を作りなさい.

※次のサンプルファイル pr2-2-ex2.tar.gz を右クリックし,「名前を付けてリンク先を保存」を選んでダウンロードすること.
そして,

     $ tar zxvf pr2-2-ex2.tar.gz
というコマンドを実行すると,カレントディレクトリに pr2-2-ex2 という名前のディレクトリが自動的に作られ,その下に 6 つのファイルが作られる:
     $ cd pr2-2-ex2
     $ ls
     anpanman.JPG  imabari.JPG  miyazaki.JPG  nagoya.JPG  osaka.JPG  wakayama.JPG
ここで,課題となっている convertJPG.sh を正しく作成して実行すれば, それぞれの拡張子が書き変わる:
     $ bash convertJPG.sh
     $ ls
     anpanman.jpg  imabari.jpg  miyazaki.jpg  nagoya.jpg  osaka.jpg  wakayama.jpg

課題 2-2

カレントディレクトリ以下(サブディレクトリも含む)に存在する全ての C ソースファイル(拡張子 .c) について,それぞれのファイル名と行数をカンマで区切って一覧表示するシェルスクリプト c_list.sh を作りなさい.
(ヒント:行数を調べるには wc を使い, さらにその一部を切り出すには cut を使うとよい;
※計算機室での wc コマンドのバージョンでは, 行番号の前にスペースが入ってしまい,
追加の処理が必要なようである→
例題 3 を参照のこと)

※実行例.
例題 1 で用意したディレクトリ pr2-2-ex1 にて実行した場合:

     $ cd pr2-2-ex1
     $ ls
     bar.c  foo.c  hoge.c
     $ bash c_list.sh
     bar.c,27
     foo.c,19
     hoge.c,21