readded udpated scripts directory
This commit is contained in:
parent
cd053a412a
commit
f3117c81d9
84 changed files with 3210 additions and 0 deletions
103
scripts/unrm
Executable file
103
scripts/unrm
Executable file
|
|
@ -0,0 +1,103 @@
|
|||
#!/bin/bash
|
||||
|
||||
# unrm--Searches the deleted files archive for the specified file or
|
||||
# diredctory. If there is m,ore than one matching result, it shows a list
|
||||
# of results ordered by timestampe and lets the user specify which one
|
||||
# to restore.
|
||||
|
||||
archivedir="$HOME/.recycle-bin"
|
||||
realrm="$(which rm)"
|
||||
move="$which mv"
|
||||
|
||||
dest=$(pwd)
|
||||
|
||||
if [ ! -d $archivedir ] ; then
|
||||
echo "$0: No deleted files directory: nothing to unrm" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $archivedir
|
||||
|
||||
# If given no arguments, just show a listing of the delted files.
|
||||
if [ $# -eq 0 ] ; then
|
||||
echo "Contents of your delted files archive (sorted by date):"
|
||||
ls -FC | sed -e 's/\([[:digit:]][[:digit:]]\.\)\{5\}//g' \
|
||||
-e 's/^/ /'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Otherwise, we must have a user-specified pattern to work with.
|
||||
# Let's see if the pattern matches more than one file or directory
|
||||
# in the archive.
|
||||
|
||||
matches="$(ls -d *"$1" 2 > /dev/null | wc -l )"
|
||||
|
||||
if [ $matches -gt 1 ] ; then
|
||||
echo "More than one file or directory match in the archive:"
|
||||
index=1
|
||||
for name in $(ls -td *"$1" )
|
||||
do
|
||||
datetime="$(echo $name | cut -c1-14) \
|
||||
awk -F. '{ print "$5"/"$4" at "$3":"$2":"$1" }')"
|
||||
filename="$(echo $name | cut -c16-)"
|
||||
if [ -d $name ] ; then
|
||||
filecount="$(ls $name | wc -l | sed 's/[^[:digit:]]//g')"
|
||||
echo " $index) $filename (contents = ${filecount} items," \
|
||||
" deleted = $datetime)"
|
||||
else
|
||||
size="$(ls -sdk1 $name | awk '{print $1}')"
|
||||
echo " $index) $filename (size = ${size}Kb, deleted = $datetime)"
|
||||
fi
|
||||
index=$(( $index + 1 ))
|
||||
done
|
||||
echo ""
|
||||
/bin/echo -n "Which version of $1 should I restore ('O' to quit)? [1] : "
|
||||
read desired
|
||||
if [ ! -z "$(echo $desired | sed 's/[[:digit:]]//g')" ] ; then
|
||||
echo "$0: Restore canceled by user: invalid input." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ${desired:=1} -ge $index ] ; then
|
||||
echo "$0: Restore canceled by user: index value too big." >&2
|
||||
fi
|
||||
|
||||
if [ $desired -lt 1] ; then
|
||||
echo "$0: Restore canceled by user." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
restore="$(ls -td1 *"$1" | sed -n "${desired}p")"
|
||||
|
||||
if [ -e "$dest/$1" ] ; then
|
||||
echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
/bin/echo -n "Restoring file \"$1\" ..."
|
||||
$move "$restore" "$dest/$1"
|
||||
echo "done."
|
||||
|
||||
/bin/echo -n "Delete the additional copies of this file? [y] "
|
||||
if [ ${answer:=y} = "y" ] ; then
|
||||
$realrm -rf *"$1"
|
||||
echo "Deleted."
|
||||
else
|
||||
echo "Additional copies retained."
|
||||
fi
|
||||
else
|
||||
if [ -e "$dest/$1" ] ; then
|
||||
echo "\"$1\" already exists in this directory. Cannot overwrite." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
restore="$(ls -d *"$1")"
|
||||
|
||||
/bin/echo -n "Restoring file \"$1\" ..."
|
||||
$move "$restore" "$dest/$1"
|
||||
echo "Done."
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue