#!/bin/bash echo "年月日(yyyymmdd)を指定してください:" #文字列の表示 read ymd #年月日の値をymdに入力 echo "時刻(hhmmss)を指定してください:" #文字列の表示 read hms #時刻の値をhmsに入力 #次の一文は、複数の動作をパイプラインで繋げて行っている。findで全画像データの、ファイル名を含めたパスをリストとして出力し、awkに渡す。awkでは入出力の区切り文字を"_"に指定し、先のymdとhmsをawk内で用いる引数としてymとhmを定義した上で、各ファイル名の年月日と時刻それぞれの値に対して入力値との差の絶対値(x,y)を計算させ、パスの文末に付加する。各行に対して付加された二つの絶対値を使って、リストをsortする。headでリストの先頭の行のみ出力させて、cutでパスの部分のみ切り出す。得られた一つの画像ファイルのパスを、ターミナル上に表示させると共に、teeでrepath.txtにも書き込む。 find /home/tetsuya/kadai2_data/*/*.jpg | awk -F'[_]' -v'OFS=_' -v"ym=$ymd" -v"hm=$hms" '{x=ym-$3;y=hm-$4;print $0,(x < 0) ? -x : x,(y < 0) ? -y : y}' | sort -k8,8 -k9,9 -t "_" -n | head -n1 | cut -d "_" -f 1-7 | tee repath.txt echo "を表示します。" #文字列の表示 eog `cat repath.txt` #repath.txtに書かれているパスをcatで出力し、eogにそのパスを入力させて目的の画像ファイルを表示させる。