2つのディレクトリを検討してA
くださいB
。
A
A.txt
3秒ごとに内容が変更されるテキストファイルが含まれています。
A.txt
シェルスクリプトはディレクトリに移動し、B
名前をA_1.txt
。
3秒後にスクリプトをディレクトリA.txt
にコピーする必要があります。A_2.txt
B
区切り文字を押すまでスクリプトを終了しないでください。
答え1
bash
またはksh93
およびinotifywait
:を使用してください。
i=0
while true; do
inotifywait -e close_write A/A.txt
cp A/A.txt "B/A_$(( ++i )).txt"
done
Ctrl+C押すとスクリプトが終了します。
注:Linuxを使用していないため、inotifywait
実際に自分のコンピュータでイベントをキャプチャすることはできませんが、close_write
Linuxではこれが正しく行われることを願っています。
inotifywait
書き込みのためにファイルを開いた外部プロセスが書き込みを終了してファイルを閉じたときにA/A.txt
返す呼び出し。これにより、スクリプトは引き続きディレクトリにファイルをコピーできますB
。
これは、時々ファイルに書き込むプロセスとスクリプトを同期するよりも便利です。