犬ターネット

特定ディレクトリ配下にファイルが作成されたら別のディレクトリに移動させる

2011-09-22 unix

ということをやりたい場合、inotifywait っていうファイル監視コマンドが使えそう。とりあえず手元の centOS で試してみる。

まずは inotify-tools を yum でインストール。

$ yum install inotify-tools

んで、こういう watch.sh ていうシェルスクリプト書いた。/unko/from/ を監視して、ファイルが作成されたら /unko/to/ に移動って感じ。

#!/bin/sh
from=/unko/from/
to=/unko/to/
inotifywait --format "%f" -mq -e create $from | while read file; do
  mv -f $from$file $to$file
  echo "[moved] $from$file -> $to$file"
done

さっそくターミナルから watch.sh を起動。

$ chmod 700 watch.sh
$ ./watch.sh

別ターミナル開いて /unko/from/ にファイル作ってみる。

$ touch /unko/from/aaa
$ touch /unko/from/bbb
$ touch /unko/from/ccc

元のターミナルに戻るとデバッグ用メッセージでてる。おお、いいんじゃないの。

$ ./watch.sh
[moved] /unko/from/aaa -> /unko/to/aaa
[moved] /unko/from/bbb -> /unko/to/bbb
[moved] /unko/from/ccc -> /unko/to/ccc

ほんとにファイル移動されてるか tree で確認。オッケー。

$ tree /unko/
/unko/
|-- from
`-- to
    |-- aaa
    |-- bbb
    `-- ccc

2 directories, 3 files

アメブロについて

スラッシュ2つ+ドメイン+パス