免責聲明:這可能是矯枉過正,但另一方面可能更快實施和更穩定。
有一個名爲directory_watcher的ruby庫,它可以監視目錄的變化。
一個簡單的腳本,如
#!/usr/bin/env ruby
require 'rubygems'
require 'directory_watcher'
dw = DirectoryWatcher.new '.'
dw.add_observer do
|*args| args.each do |event|
puts event
end
end
dw.start
gets # when the user hits "enter" the script will terminate
dw.stop
可以讓你開始。這裏修改(或刪除或添加)的文件名只是打印到標準輸出。
這裏是一個example script,將觀看file1.txt
,file2.txt
,file3.txt
。每當其中一個被改變時,它將把它們連接成files-combined.txt
。
#!/usr/bin/env ruby
require 'rubygems'
require 'directory_watcher'
dw = DirectoryWatcher.new '.'
dw.interval = 1.0
dw.add_observer do |*args|
args.each do |event|
if /file\d/ =~ event.path
`cat file1.txt file2.txt file3.txt > files-combined.txt`
puts "#{Time.now.strftime("%I:%M:%S")} \
Created files-combined.txt (since #{event.path} #{event.type})"
end
end
end
dw.start
gets # when the user hits "enter" the script will terminate
dw.stop
輸出會是這樣:
$ ruby 7083085.rb
08:55:47 Created files-combined.txt (since ./file3.txt added)
08:55:47 Created files-combined.txt (since ./file1.txt added)
08:55:47 Created files-combined.txt (since ./file2.txt added)
08:55:54 Created files-combined.txt (since ./file1.txt modified)
08:55:57 Created files-combined.txt (since ./file1.txt modified)
This works great!謝謝你miku! – jaysonp