すべてのファイルをコピーしたら、inotifywaitを使用してビルドします。

すべてのファイルをコピーしたら、inotifywaitを使用してビルドします。

私はファイルをコピーしてビルドするためにinotifywaitを使用しています。しかし、変更されたファイルをすべてコピーして一度ビルドするにはどうすればよいですか?単純なスクリプトは、ファイルが変更されるたびに3回ビルドされます(保存時に一時ファイルに関連していますか?)。

inotifywait --event modify -m -r -q --format '%w%f' "/home/$1/src/$2"  | while read filename event
do
cp -f "$filename" "$TARGET_DIR"
make all

一度ビルドでき、一度に1つのファイルを変更すると機能しますが、一度に複数のファイルを変更すると、ビルド前に最初のファイルのみがコピーされます。

LASTCALLED=$(date +%s)
inotifywait --event modify -m -r -q --format '%w%f' "/home/$1/src/$2"  | while read filename event
do
   cp -f "$filename" "$TARGET_DIR"
   if [[ $(($(date +%s)-$LASTCALLED)) -gt 5 ]]; then
      make all
   LASTCALLED=$(date +%s)

ビルドする前にinotifywaitループが完了したことを確認する簡単な方法はありますか?

ベストアンサー1

inotifywaitあなたはあなたに知らせることができます一つ変更して残りは選択しますrsync

inotifywait --event modify -m -r -q "$SOURCE_PATH"  | while read filename event
do
   rsync [flags] "$SOURCE_PATH" "$TARGET_DIR"
   make all

おすすめ記事