Skip to content

Instantly share code, notes, and snippets.

@marek-saji
Last active August 29, 2015 14:18
Show Gist options
  • Save marek-saji/b5037f55a5e60c815285 to your computer and use it in GitHub Desktop.
Save marek-saji/b5037f55a5e60c815285 to your computer and use it in GitHub Desktop.
Generate listing of stuffs
#!/bin/sh
# TODO Create single commit
# TODO Run find in paralell, display single progress bar
# exit if any command fails
set -e
# kill immediate children, when script ends
trap 'ps -opid= --sort=start_time --ppid=$$ | head -n-2 | xargs kill' INT TERM QUIT EXIT
if [ "root" != "$( whoami )" ]
then
echo ERROR Run as root
exit 64
fi
cd "$( dirname "$0" )"
for MOUNTPOINT in /media/saji/*
do
NAME="$( basename "${MOUNTPOINT}" )"
FN="$NAME.find"
if ! mountpoint "$MOUNTPOINT"
then
echo "ERROR: $MOUNTPOINT not mounted"
exit 66
fi
cd "$MOUNTPOINT"
SIZE="$( du -b "$OLDPWD/$FN" | cut -f1 )"
find . | bar --size "$SIZE" --display-none --display-time --display-percent --display-bar | sort > "$OLDPWD/$FN"
cd - > /dev/null
git add "$FN"
if ! ( git diff --exit-code --cached "$FN" >/dev/null )
then
git commit -m "$NAME contents as of $(date +%F\ %T)"
else
echo "No changes, omitting commit."
fi
chown -R "$( stat --format=%u:%g "$0" )" \
"$FN" \
"$( git rev-parse --git-dir )"
done
for MOUNTPOINT in /media/saji/*
do
cp -v *.find "${MOUNTPOINT}"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment