78 lines
2.1 KiB
Bash
Executable File
78 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# updatedb -- build locate pathname database
|
|
# csh original by James Woods; sh conversion by David MacKenzie.
|
|
# Public domain.
|
|
|
|
PATH=/bin:/usr/bin # Just temporarily.
|
|
|
|
# You can set these in the environment to override their defaults:
|
|
|
|
# Non-network directories to put in the database.
|
|
test -z "$SEARCHPATHS" && SEARCHPATHS="/"
|
|
|
|
# Network directories to put in the database.
|
|
test -z "$NFSPATHS" && NFSPATHS=
|
|
|
|
# Pathnames that match this regular expression are not searched.
|
|
test -z "$PRUNEREGEX" &&
|
|
PRUNEREGEX='\(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)'
|
|
|
|
# User(s) to mail error messages about `sort' overflows to.
|
|
test -z "$FINDHONCHO" && FINDHONCHO="root"
|
|
|
|
# User to search network directories as.
|
|
test -z "$NFSUSER" && NFSUSER=daemon
|
|
|
|
# Directory to hold intermediate files.
|
|
test -z "$TMPDIR" && TMPDIR=/usr/tmp
|
|
|
|
# The database file to build.
|
|
test -z "$LOCATE_DB" && LOCATE_DB=/usr/lib/locate/find.codes
|
|
|
|
|
|
# These you probably won't need to override:
|
|
|
|
# The directory containing the subprograms.
|
|
LIBDIR=/usr/lib/locate
|
|
|
|
# The directory containing find.
|
|
BINDIR=/usr/bin
|
|
|
|
# Any prefix in the GNU find filename, before `find'.
|
|
binprefix=
|
|
|
|
PATH=$LIBDIR:$BINDIR:/usr/ucb:/bin:/usr/bin export PATH
|
|
|
|
bigrams=$TMPDIR/f.bigrams$$
|
|
filelist=$TMPDIR/f.list$$
|
|
errs=$TMPDIR/f.errs$$
|
|
trap 'rm -f $bigrams $filelist $errs' 0
|
|
trap 'rm -f $bigrams $filelist $errs; exit' 1 15
|
|
|
|
# Make a file list. Alphabetize `/' before any other char with `tr'.
|
|
|
|
{
|
|
if test -n "$SEARCHPATHS"; then
|
|
${binprefix}find $SEARCHPATHS \
|
|
\( -fstype nfs -o -type d -regex "$PRUNEREGEX" \) -prune -o -print
|
|
fi
|
|
if test -n "$NFSPATHS"; then
|
|
su $NFSUSER -c \
|
|
"${binprefix}find $NFSPATHS \\( -type d -regex \"$PRUNEREGEX\" -prune \\) -o -print"
|
|
fi
|
|
} | tr / '\001' | sort -f 2> $errs | tr '\001' / > $filelist
|
|
|
|
# Compute common bigrams.
|
|
|
|
bigram < $filelist | sort 2>> $errs | uniq -c | sort -nr |
|
|
awk '{ if (NR <= 128) print $2 }' | tr -d '\012' > $bigrams
|
|
|
|
# Code the file list.
|
|
|
|
if test -s $errs; then
|
|
echo 'updatedb: out of sort space' | mail $FINDHONCHO
|
|
else
|
|
code $bigrams < $filelist > $LOCATE_DB
|
|
chmod 644 $LOCATE_DB
|
|
fi
|