Instantly share code, notes, and snippets.

Embed
What would you like to do?
Deletes ~/project/ rust target data older than 2 week days
#!/usr/bin/env bash
## Deletes ~/project/ rust target data older than 2 week days
set -eu
shopt -s globstar nullglob
# 2 week days or older
find_atime="+1"
case $(date --date='+6 hours' +%u) in
1) find_atime="+4" ;;
6) find_atime="+2" ;;
7) find_atime="+3" ;;
esac
match_count=$(/usr/bin/find ~/project/**/{target,target/rls}/{debug,release} -type f -ctime $find_atime -atime $find_atime | wc -l)
if [[ $match_count -gt 0 ]]; then
echo "Removing $match_count file(s): find ~/project/**/{target,target/rls}/{debug,release} -ctime $find_atime -atime $find_atime"
du_before=$(du -hd0 /home/alex/project/ | cut -f1)
/usr/bin/find ~/project/**/{target,target/rls}/{debug,release} \
-type f -ctime $find_atime -atime $find_atime -delete
# shellcheck disable=SC2088
echo "~/project: $du_before -> $(du -hd0 /home/alex/project/ | cut -f1)"
fi
@alexheretic

This comment has been minimized.

Owner

alexheretic commented Dec 4, 2018

stdout will be something like:

Removing 6658 file(s): find ~/project/**/{target,target/rls}/{debug,release} -ctime +1 -atime +1
~/project: 41G -> 36G
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment