voidrice/.local/share/trash-put
snailed d63a37f7ad
Create trash-put
A trashing script that is near xdg trash spec compliant. The only thing missing is updating a file listing directory sizes
2022-10-21 18:24:59 +00:00

29 lines
783 B
Bash

#!/bin/sh
set -e
[ -e "$1" ] || exit 1
getfsroot() {
printf "%s" "$(df "$1" --output=target | tail -1)"
}
filepath="$(realpath "$1")"
filename="$(basename "$1")"
fsroot="$(getfsroot "$1")"
[ "$fsroot" = "$(getfsroot "${XDG_DATA_HOME:-$HOME/.local/share}")" ] \
&& basedir="${XDG_DATA_HOME:-$HOME/.local/share}/Trash" \
|| basedir="${fsroot}/.Trash"
infodir="$basedir/info"
filedir="$basedir/files"
mkdir -p "$infodir" 1>/dev/null 2>&1
mkdir -p "$filedir" 1>/dev/null 2>&1
find "$filedir" -regex ".*$filename.*" | grep -oP '\d' | sort -n | tail -1 | (
ext=$(($(cat /dev/stdin)+1))
filedest="$filedir/$filename.~${ext:-1}~";
command mv -f "$filepath" "$filedest";
cat <<EOF > "$infodir/$(basename "$filedest")"
[Trash Info]
Path=$filepath
DeletionDate=$(date +%Y%m%dT%T)
EOF
)