プロが教える店舗&オフィスのセキュリティ対策術

ちょっとスクリプトを作ろうとしたのですが、行き詰ってしまいました。
下記の要件を満たすにはどうすればよいでしょうか。ご教示ください。

環境:WinXP Pro, Windows Services for UNIX 3.5
言語:csh

目的:
/dev/fs/C/hogehoge/YYYYMMDD/配下にjpgファイルを複数保存している。
これに対して、jpgファイル数の日付別一覧を出力したい。

条件:
1.hogehogeディレクトリ配下には複数の日付ディレクトリが存在するものとする。
 ※また、hogehogeディレクトリ配下には、YYYYMMDD以外の名前のディレクトリもあるが、
 これらのディレクトリに対しては、特に何らかの情報を取得する必要は無し。

2.cshを実行するときに引数として、jpgファイル数を取得する期間を指定したい。

各ディレクトリに対するjpgファイル数自体の出力部分については
ls /dev/fs/C/hogehoge/YYYYMMDD/*.jpg | wc -l
で数えられるかと思うのですが、日付ディレクトリの取り扱いに困っています…よろしくお願いします。

A 回答 (5件)

YYYYMMDDというディレクトリが実際にあるのですか?


それとも
20070701
20070702
20070703

というように、日別のディレクトリがいくつもあるのですか。

この回答への補足

説明不足でした。申し訳ありません。
後者のように、
20070701
20070702
20070703

となっています。
さらにそのディレクトリの下に、複数のファイルが保存されている状況です。
よろしくお願いします。

補足日時:2007/07/29 20:20
    • good
    • 0

ls /dev/fs/C/hogehoge/で日付のリストを取り、


ファイルリストの引数に与えてやればいいと思います。
ただ、shならすぐ書けるんですがcshはちょっと自信がないのでパスさせてもらいます
    • good
    • 0

ls /dev/fs/C/hogehoge/????????/*.jpg | wc -l


とすればどうしょうか。
YYYYMMDD以外の8文字のディレクトリがあれば、それも対象になって
しまいますが。
    • good
    • 0

えーとまず、cshのスクリプトファイル機能は、.cshrc を書く程度の機能しかないので、何らかの処理をするスクリプトを書くなら、sh か bash の方が良いです。

SFUはアンインストールしちゃったので忘れましたが、cshしかなかったんでしたっけ。まあ、この程度ならぎりぎり書けると思います。

引数1に開始日、引数2に終了日を、それぞれ数字8桁で指定するとして、引数のエラーチェックを省くと、

cd /dev/fs/C/hogehoge
foreach d ([1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
if ( $1 <= $d && $d <= $2 ) echo $d : `echo $d/*.jpg | wc -l`
end

日付ディレクトリの下に、*.jpg のファイルが1つもない場合はエラーメッセージが出ます。これを出ないようにするにはさらに処理が要ります。エラーを気にしないのが楽です。
    • good
    • 0

ちなみにshの場合


#!/bin/sh
cd /dev/fs/C/hogehoge/
for i in `ls`
do
echo ${i} >> out.txt
ls ${i}/*.jpg | wc -l >> out.txt
echo " " >> out.txt
done

って感じでしょうか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!