3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(Linux)新規に作成、変更されたファイルを探し出し、テキストファイルに落とす方法。

現在、FTPサーバで1週間毎に新規にUP,変更されたファイルをテキストファイルに落として、利用者が確認できるようにする要望があがってたのでシェルスクリプトで実装してみました。

まあ、findコマンドを使っているだけですが、こんな感じのスクリプトです。

#!/bin/sh

#監視ディレクトリ指定

TRG_DIR="監視したいディレクトリ"

#日付取得

DATE=`date +%Y-%m-%d`

#結果を落とすファイルパス設定(ファイル先頭に日付を入れる)

OUTPUT="結果を落とすディレクトリ/${DATE}_output.txt"

#検索し、ファイルに落とす

echo `find $TRG_DIR -mtime -7 -fprint $OUTPUT`

echo "Ftp Directory File Update Search OK!!!!!"

exit 0

肝なのは find コマンドの使い方です。

-mtime -7 で7日前に変更されたファイルを検索するよう指定しています。

-fprint パス で結果を指定されたファイルにはきだします。

今後の用途として、結果のファイルをWebから見れるようにHTMLに整形したいのですが、これは今後の課題としたいと思います。

あとは一週間おきにこのスクリプトが実行されるように cron に登録します。

[root@localhost sh]# crontab -e

#ftp update sunday(毎週日曜日の00:01に指定されたスクリプト実行)

1 0 * * sun /root/sh/update_ftp_list.sh

cron の使い方についてはcron & シェルスクリプトを参照。

参考:

Manpage of FIND

UNIXの部屋 コマンド検索: find(実用例が載ってます)

UNIXの部屋 コマンド検索: タイムスタンプ(findのタイムスタンプのオプション(というよりLinux自体のタイムスタンプ)には -atime -mtime -ctime とあるのですが、それぞれの説明です。)