Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#!/usr/bin/env lua51
-- quickdiff.lua
-- By Eduardo Ochs, 2007apr13
-- Compare the files in two directories
-- (by default /tmp/page/angg/ and /tmp/page/rumi/)
-- and print a report like this (with many many lines):
--   changed: e/x.e
--   same: .bashrc
-- The first words are always "changed", "same", "deleted" or
-- "created". The idea is that the output of this will be filtered
-- with grep and awk and then blah blah etc.
-- Typical usage:
* (eepitch-shell)
mkdir /tmp/page/
cd    /tmp/page/
wget -O edrx-angg.tgz http://angg.twu.net/edrx.tgz 
mkdir  /tmp/page/angg/
tar -C /tmp/page/angg/ -xvzf /tmp/page/edrx-angg.tgz

* (eepitch-shell)
cp -v ~/TH/L/edrx.tgz /tmp/page/edrx-rumi.tgz
mkdir  /tmp/page/rumi/
tar -C /tmp/page/rumi/ -xvzf /tmp/page/edrx-rumi.tgz

-- Then:
-- (find-sh "quickdiff.lua | sort | tee /tmp/page/odiff")
-- (find-fline "/tmp/page/odiff")

-- (find-sh "cd /tmp/page/angg/ && find -type f | cut -b 3-")
-- (find-sh "cd /tmp/page/rumi/ && find -type f | cut -b 3-")

angg = (arg and arg[1]) or "/tmp/page/angg/"
rumi = (arg and arg[2]) or "/tmp/page/rumi/"
anggfiles = split(getoutput("cd "..angg.." && find -type f | cut -b 3-"))
rumifiles = split(getoutput("cd "..rumi.." && find -type f | cut -b 3-"))
allfiles  = {}
anggcontents = {}
rumicontents = {}
for _,fname in ipairs(anggfiles) do
  allfiles[fname] = fname
  anggcontents[fname] = readfile(angg..fname)
for _,fname in ipairs(rumifiles) do
  allfiles[fname] = fname
  rumicontents[fname] = readfile(rumi..fname)
for fname,fnameagain in pairs(allfiles) do
  if anggcontents[fname] and rumicontents[fname] then
    if anggcontents[fname] == rumicontents[fname] then
      allfiles[fname] = "same"
      allfiles[fname] = "changed"
    if anggcontents[fname] then allfiles[fname] = "deleted" end
    if rumicontents[fname] then allfiles[fname] = "created" end
  print(allfiles[fname]..": "..fname)

-- (find-fline "/tmp/page/odiff")