、inotifywait -e CREATE
からのテキスト出力は、フォーム
watched_filename
が
/home/inventory/initcsv
と
event_filename
新しいファイルの名前を表しを表し
watched_filename CREATE event_filename
です。
DIR=/home/inventory/initcsv
while RES=$(inotifywait -e create $DIR); do
F=${RES#?*CREATE }
をしてFilein
名前としてあなたのsed
回線使用$F
中:
だから、あなたのwhile inotifywait -e ...
ラインの代わりに、置きます。 $(...)
構成は、プロセス置換のposix互換形式です(多くの場合、バックティックを使用して実行されます)。の結果は、$RES
に等しく、最短パターン一致接頭辞は削除されます。パターンの最後の文字は空白であることに注意してください。 sedの回線使用"$F"
の代わり$F
で、空白文字を含むことができ、ファイル名を処理するために
アップデート1 [2を更新参照してください]。つまり、F
という値の参照を二重引用符で囲みます。
RES=...
とF=...
の定義では、二重引用符を使用する必要はありませんが、必要に応じて使用することもできます。たとえば、F=${RES#?*CREATE }
とF="${RES#?*CREATE }"
は、空白を含むファイル名を扱うときにどちらもうまく動作します。
更新2 Daanのコメントに記載されているように、inotifywait
には、出力形式を制御する--format
パラメータがあります。
Setting up watches.
Watches established.
RES is a at Tue Dec 31 11:37:20 MST 2013
Setting up watches.
Watches established.
RES is aaa at Tue Dec 31 11:37:21 MST 2013
Setting up watches.
Watches established.
RES is aaaa at Tue Dec 31 11:37:22 MST 2013
Setting up watches.
Watches established.
'--format%w'オプションを使用して出力するだけでは、ファイル名だけしか使用できないのはなぜですか? – Daan
@ Daan、はい、それは意味があります(%fでは%wではありません)。 update 2を参照してください。 –
'inotifywait -e delete_self aSymlinkFilename'は、シンボリックリンクが削除された場合にのみ、実際のファイルが削除された場合には動作しません:(また、-mスイッチを使用している場合は –