From c2d4b02cb607feb9534c86d243c56f90a576a519 Mon Sep 17 00:00:00 2001 From: thek4n Date: Tue, 25 Mar 2025 11:13:49 +0300 Subject: [PATCH] zsh refactor function cleanup-directory --- home/user/.config/zsh/functions | 42 +++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/home/user/.config/zsh/functions b/home/user/.config/zsh/functions index e941451..a5736de 100644 --- a/home/user/.config/zsh/functions +++ b/home/user/.config/zsh/functions @@ -87,29 +87,51 @@ showtips() { } cleanup-directory() { - local -r directory="${1}" + local -r directory="$(realpath "${1}")" + local -r age="+21" # Notation: +n => "At least n days" if [ ! -d "${directory}" ]; then echo "Directory '${directory}' not found" >&2 return 1 fi - age="+21" # Notation: +n => "At least n days" - echo "Deleting files not accessed for a ${age} days:" - find "${directory}" -atime "${age}" -exec rm -fv {} \; + if [ -n "${DRYRUN}" ]; then + echo "Deleting files not accessed for a ${age} days:" + find "${directory}" -atime "${age}" - echo "Deleting empty directories:" - find "${directory}" -type d -empty -print -delete + echo "Deleting empty directories:" + find "${directory}" -type d -empty -print + else + echo "Deleting files not accessed for a ${age} days:" + find "${directory}" -atime "${age}" | xargs -r rm -fv + + echo "Deleting empty directories:" + find "${directory}" -type d -empty -print | xargs -r rmdir + fi } -cleanup-downloads() { - local -r downloads_directory="${XDG_DOWNLOAD_DIR}" - local -r log_file="${downloads_directory}/cleanup.log" +cleanup-directory-log() { + local -r directory="$(realpath "${1}")" + if [ ! -d "${directory}" ]; then + echo "Directory '${directory}' not found" >&2 + return 1 + fi + + local log_file="${directory}/cleanup.log" + + if [ -n "${DRYRUN}" ]; then + log_file="/dev/null" + fi touch "${log_file}" echo "$(date -Iseconds) : Start cleanup" >> "${log_file}" - cleanup-directory "${downloads_directory}" | tee -a "${log_file}" + cleanup-directory "${directory}" | tee -a "${log_file}" +} + +cleanup-downloads() { + local -r downloads_directory="${XDG_DOWNLOAD_DIR}" + cleanup-directory-log "${downloads_directory}" } _bak() {