Decomposition 2026 11 05
ASecurityset -euo pipefail dir="${1:-}" if [ -z "$dir" ]; then echo "Пустой аргумент 1: каталог не передан." >&2 echo "Использование: $0 <каталог>" >&2 exit 2 fi if [ ! -d "$dir" ]; then echo "Не каталог или не существует: $dir" >&2 exit 2 fi count=$(find "$dir" -mindepth 1 -maxdepth 1 -type f -mtime +30 -print0 \ | tr -cd '\0' | wc -c) printf '%d\n' "$count" ``` Проверка (ожидается `1`): ```bash chmod +x count_old_files.sh mkdir -p /tmp/t touch /tmp/t/new.txt touch -d '31 days ago' /tmp/t/old.txt ./c...
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added November 11, 2026
Security analysis
100/100Pro scans all 21 files and shows the line behind each finding
npx -y skills add Siririn77/i-have-autism --skill decomposition-2026-11-05 --agent claude-codeAre you the author of Decomposition 2026 11 05?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/siririn77-decomposition-2026-11-05-ebf1d4cf)Граф (4 узла):
1. **Глубина** — что: один аргумент-каталог, по умолчанию без рекурсии. Почему: рекурсия меняет ответ. Якорь: `-maxdepth 1`. Когда: всегда.
2. **Возраст** — что: `-mtime +30` считает полные сутки, `+30` = «31 сутки и больше». Почему: «старше 30 дней» двусмысленно ровно на границе. Якорь: строка `find`. Когда: файл возрастом ровно 30 суток.
3. **Имена файлов** — что: NUL-разделитель вместо перевода строки. Почему: имя с пробелом или `\n` ломает `for` и счёт становится неверным. Якорь: `-print0 | tr -cd '\0' | wc -c`. Когда: спецсимволы в именах.
4. **Что исключено** — что: подкаталоги и симлинки. Почему: `-type f` не считает ссылку на файл. Якорь: `-type f`. Когда: в каталоге есть symlink.
Связи: 1→2 (причина: глубина задаёт набор, к которому применяется возраст); 3→2 (противоречие: без NUL счёт по узлу 2 неверен); 4→2 (уточнение: symlink не попадёт в счёт).
```bash
#!/usr/bin/env bash
# План: вход — каталог $1, без рекурсии, только обычные файлы;
# действие — find -mtime +30 с NUL-разделителем;
# выход — число в stdout; код 2, если аргумент пуст или это не каталог.
set -euo pipefail
dir="${1:-}"
if [ -z "$dir" ]; then
echo "Пустой аргумент 1: каталог не передан." >&2
echo "Использование: $0 <каталог>" >&2
exit 2
fi
if [ ! -d "$dir" ]; then
echo "Не каталог или не существует: $dir" >&2
exit 2
fi
count=$(find "$dir" -mindepth 1 -maxdepth 1 -type f -mtime +30 -print0 \
| tr -cd '\0' | wc -c)
printf '%d\n' "$count"
```
Проверка (ожидается `1`):
```bash
chmod +x count_old_files.sh
mkdir -p /tmp/t
touch /tmp/t/new.txt
touch -d '31 days ago' /tmp/t/old.txt
./count_old_files.sh /tmp/t
```
Что теперь работает: скрипт печатает одно число, имена с пробелами считаются верно, пустой аргумент даёт код 2 и имя пустого поля в сообщении.
Две правки по одной строке, если ответ должен быть другим:
- «30 суток и больше» вместо «строго больше 30»: `-mtime +29`.
- Считать и в подкаталогах: убрать `-maxdepth 1`.
Следующее действие: сохрани текст в `count_old_files.sh` и запусти `./count_old_files.sh <твой каталог>`.Files in this skill
- SCORE.md
- answer-estimate_with-skill.md
- answer-estimate_without-skill.md
- answer-next-step_with-skill.md
- answer-next-step_without-skill.md
- answer-no-preamble_with-skill.md
- answer-no-preamble_without-skill.md
- cases.json
- code-edge-negative_with-skill.md
- code-edge-negative_without-skill.md
- comment-says-why_with-skill.md
- comment-says-why_without-skill.md
- decomposition-huge_with-skill.md
- decomposition-huge_without-skill.md
- decomposition-small_with-skill.md
- decomposition-small_without-skill.md
- destructive-needs-confirmation_with-skill.md
- destructive-needs-confirmation_without-skill.md
- disagree-first-line_with-skill.md
- disagree-first-line_without-skill.md
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.