mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-03-20 01:37:45 +01:00
A trashing script that is near xdg trash spec compliant. The only thing missing is updating a file listing directory sizes
29 lines
783 B
Bash
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
|
|
)
|