すごくはまってしまった。。
シェルスクリプトで 日付入りファイル名のzipファイルの中から1週間前以前のものを削除する、シェルスクリプトを作って、 内製のスケジューラからそのshを呼び出すということをしていたのだけど、
なぜかファイルが消えず、sh単体で動かしてたらちゃんと動いてて、 パーミッションを疑ってたけど、違ったー。
DE_DATE=`date -d '7 day ago' +%Y%m%d` for file in `find . -name "HOGE_*.zip"` do FILE_DATE=`expr "${file}" : ".*\([0-9]\{8\}\)"` if [ -n "${FILE_DATE}" ] && [ ${FILE_DATE} -lt ${DE_DATE} ]; then rm -f ${file} fi done
shの中身は↑の通りだったのだけど、findでファイルがまったく引っかかってなかった。
なぜかというと単純にカレントディレクトリが、想定したディレクトリではなかった。
find . -name "HOGE_*.zip"
↑で、.
で指定してるから、カレントディレクトリから名前検索してくれてるんだけど、
この.
がshファイルからみたものかと思ってたんだけど、そうではなくて、
cd
でディレクトリ移動してからだったらふつうに出来た。
shというより、スケジューラ側の話しになるのかなー…。