web-dev-qa-db-ja.com

inotifywaitを使用して、特定の拡張子のファイルの作成についてディレクトリを監視する方法

私は この答え を見てきました。

例として、inotifywaitの使用を検討する必要があります。

inotifywait -m /path -e create -e moved_to |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'"
        # do something with the file
    done

私の質問は、上記のスクリプトは任意のタイプのファイルの作成についてディレクトリを監視しますが、特定のタイプ/拡張子のファイルが作成された(またはに移動された)場合にのみレポートするようにinotifywaitコマンドを変更するにはどうすればよいですか。ディレクトリ)-例.xmlファイルが作成されます。

何を試したか:

inotifywait --helpコマンド、およびコマンドラインオプションを読みました。 --exclude <pattern>および--excludei <pattern>[〜#〜] exclude [〜#〜]ファイルへのコマンド(regExを使用して)が、への方法が必要特定のタイプ/拡張子のファイルだけを含める

23
Shy

特定のタイプ/拡張子のファイルが作成されたときにのみレポートするようにinotifywaitコマンドを変更するには

現在、inotifyにアクセスできないため、これはnested codeであることに注意してください。しかし、これに似たものが機能するはずです:

inotifywait -m /path -e create -e moved_to |
    while read path action file; do
        if [[ "$file" =~ .*xml$ ]]; then # Does the file end with .xml?
            echo "xml file" # If so, do your thing here!
        fi
    done
21
maulinglawns

ダブルネガティブを使用する:

inotifywait -m --exclude "[^j][^s]$" /path -e create -e moved_to |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'"
    done

これにはJavaScriptファイルのみが含まれます

9
tofsjonas

--includeと--includeiは、少なくともバイナリのマスターバージョンの実際のオプションです。

https://github.com/rvoicilas/inotify-tools/tree/master

0
ericcurtin