Если вы используете GNU/Linux, вы можете установить xbindkeys
и запустить его в своем X-сеансе в файле ~/.xbindkeysrc
:
"echo. > ~/.caps"
Caps_Lock
Затем в вашем ~/.zshrc:
exec {CAPS_MONITOR}< <(tail -f ~/.caps 2> /dev/null)
caps-monitor() {
if
read <&$CAPS_MONITOR # consume the input
then
zle -R # redraw the prompt
#zle -M "CapsLock pressed [$((++n))]" # uncomment to verify it works
else
zle -M "CapsLock handler dysfunctional, stopping the monitoring"
zle -F $CAPS_MONITOR
fi
}
zle -N caps-monitor
zle -wF $CAPS_MONITOR caps-monitor
#! /bin/bash
# recursively
shopt -s globstar || exit
# for every subfolder
for dir in **;do
[[ ! -d $dir ]] && continue # if not directory then skip
# SUBFOLDER name inspected
echo "$dir"
# count number of files in subfolder
NUMFILES=$(find "$dir" -type f | wc -l)
# if non-empty folder
if (( $(bc <<<"$NUMFILES > 0") )); then
# if all files in folder have extension json, remove subfolder
NUMJSON=$(find "$PWD/$dir" -iname '*.json' | wc -l)
if (( $(bc <<<"$NUMFILES == $NUMJSON") )); then
echo "rm -rf "$dir""
rm -rf "$dir"
fi
fi
done
Следующий вкладыш решит вашу проблему:
sudo find. -links 2 -exec sh -c '[ "$(ls -l \{} | grep -c '^-')" \
-eq "$(ls \{} | grep -c '\.json$')" ]' \; -print0 | xargs -0 echo rm -rf {} + 2> /dev/null \;
Пояснение к коду:
sudo find. -links 2
В текущем каталоге будут возвращены только конечные каталоги.
ls -l \{} | grep -c '^-'
возвращает количество обычных файлов в каталоге.
ls \{} | grep -c '\.json$'
возвращает количество файлов с расширением json
в каталоге.
sh -c '[ "$(ls -l \{} | grep -c '^-')" -eq "$(ls \{} | grep -c '\.json$')" ]'
порождает вспомогательную оболочку -, которая возвращает true, если все файлы в каталоге имеют расширение json
, что позволяет продолжить выполнение инструкции.
rm -rf {} + 2> /dev/null
удалит непустой -каталог, перенаправляющий стандартную ошибку на /dev/null.
Предупреждение :Это решение удалит найденные папки, не содержащие обычных файлов.
Сделайте резервную копию данных перед выполнением тестов.
Выполнить код в верхнем каталоге.
Удалите эхо, когда ваши тесты завершатся успешно.