Rule-based bulk organize & rename
Move, rename, deduplicate and archive many files according to a written rule.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Finder · File Explorer · bash
- Class GUI-need label
CL· CLI-sufficient
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R01.02.01.02-T01 Rename photos to their EXIF capture time
Original instruction
In ~/fixtures/photos (312 JPEG/HEIC files) rename each file to YYYY-MM-DD_HHMMSS.<ext> from EXIF DateTimeOriginal (lowercase extension). On collisions append _1, _2 in capture-subsecond order. Files without EXIF go unchanged into ~/fixtures/photos/_noexif/.
- Platforms
mac· macOSlin· Linux- Applications
- bash · exiftool
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Final name→content-hash map equals ground truth (built from EXIF incl. SubSecTimeOriginal); file count and hash multiset unchanged (no loss); _noexif holds the 9 no-EXIF files.
Proposed partial credit
60% per-file correct names; 20% collision suffix order; 20% no-EXIF handling and no data loss
R01.02.01.02-T02 Sort a Downloads dump into type folders
Original instruction
Apply input/rules.yaml to ~/fixtures/Downloads (180 files): Documents (pdf, docx, xlsx, txt), Images (jpg, png, heic, svg), Archives (zip, 7z, tar.gz), Installers (dmg, pkg, exe, msi), everything else to Other. Extension match is case-insensitive; '.tar.gz' counts as one extension.
- Platforms
mac· macOSwin· Windowslin· Linux- Applications
- bash · PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Tree manifest (relative path + sha256) equals expected; no files left at top level; hash multiset unchanged.
Proposed partial credit
80% files in correct folder (per-file credit); 20% nothing lost or duplicated
R01.02.01.02-T03 Deduplicate by content and keep the oldest copy
Original instruction
Across ~/fixtures/team_share (2,300 files) find byte-identical duplicates. Keep the copy with the oldest mtime (tie: shortest path), move the others to ~/fixtures/_dupes preserving their relative paths, and write dupes.csv with kept_path,moved_path,sha256.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Remaining tree has no duplicate hashes; kept copies equal the expected (oldest/tie rule); _dupes paths mirror originals; dupes.csv rows equal ground truth set. Near-duplicates (1 byte differ) must stay.
Proposed partial credit
40% correct kept/moved decisions; 30% _dupes structure; 30% dupes.csv exact
R01.02.01.02-T04 Archive stale project files with verified zips
Original instruction
For each project folder in ~/fixtures/projects, zip files not modified in 180 days (relative to 2026-10-01) into <project>/_archive/<project>_stale.zip preserving subpaths, verify each archive by listing and CRC test, and only then delete the zipped originals.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · zip · PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
risk· Irreversible/risky- Proposed difficulty
- 4 / 5
Proposed verifier
Each zip contains exactly the stale set with matching CRC/sha256 on extraction; originals of zipped files gone, recent files untouched (hash); zip test log present before deletes (shell history order). Any deletion of an unarchived file -> 0.
Proposed partial credit
40% correct stale sets per project; 25% archives verify; 25% originals removed only after verify; 10% recent files intact
R01.02.01.02-T05 Finder batch rename with a counter in date order
Original instruction
In Finder, rename the 48 photos in ~/Survey to 'Site-Survey-1.jpg' … 'Site-Survey-48.jpg' numbered in Date Created order (oldest = 1), using Finder's Rename feature with the Format option. Finder numbers items in the window's current sort order.
- Platforms
mac· macOS- Applications
- Finder
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Name→hash map equals expected (index follows creation date, not name or mtime order). Terminal and Automator withheld; eslogger detects mv/osascript, and every rename event must be attributed to Finder, else 0.
Proposed partial credit
30% all renamed to the pattern; 60% numbering follows creation order; 10% no extra separators or spaces
R01.02.01.02-T06 Regex rename with PowerToys PowerRename
Original instruction
In D:\Shoot, use PowerRename to change names matching 'IMG_(\d{4})' to 'Kyoto_$1' for files only (not folders), case-sensitive, including subfolders, leaving 'img_' lowercase files unchanged.
- Platforms
win· Windows- Applications
- PowerToys PowerRename · File Explorer
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Tree manifest equals expected (folders named IMG_xxxx untouched; lowercase img_ files untouched); hashes preserved. cmd/PowerShell blocked by AppLocker; Sysmon detects Rename-Item/ren, and renames must be attributed to PowerRename.exe, else 0.
Proposed partial credit
60% target files renamed; 20% folders untouched; 20% lowercase files untouched
R01.02.01.02-T07 File invoices into Year/Month folders with vendor names
Original instruction
C:\fixtures\inbox has 400 PDFs named like 'INV-2025-03-14-ACME CORP.pdf' with messy vendor spellings. Move each into C:\Invoices\<YYYY>\<MM>\ and rename to '<YYYY-MM-DD>_<CanonicalVendor>_<n>.pdf' using vendors.csv for canonical names; unmatched vendors go to C:\Invoices\_review.
- Platforms
win· Windows- Applications
- PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Manifest equals expected (n = per-vendor-per-day counter by original name order); _review holds the 14 unmatched; hash multiset unchanged.
Proposed partial credit
40% correct folders; 40% canonical names/counters; 20% _review set exact
R01.02.01.02-T08 Organize an MP3 library from ID3 tags
Original instruction
Reorganize ~/fixtures/music (1,100 MP3/M4A) into Artist/Album/NN - Title.ext from tags (album artist preferred over artist; NN = zero-padded track). Replace / : ? * " < > | with '_', and move files missing artist or title to _Unsorted.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · mutagen · PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Path manifest equals expected for all files; compilations land under album-artist 'Various Artists'; illegal characters sanitized; _Unsorted set exact; audio hashes unchanged.
Proposed partial credit
50% correct paths; 20% sanitization; 15% compilation handling; 15% _Unsorted
R01.02.01.02-T09 Make a Linux tree safe for Windows and macOS
Original instruction
~/fixtures/export (5,000 files) must copy cleanly to NTFS and APFS. Rename to fix case-insensitive collisions (append ~2), Windows-illegal characters, reserved names (CON, NUL, COM1), trailing dots/spaces, paths >240 chars (truncate + 6-char hash) and NFD names (normalize to NFC). Write renames.csv.
- Platforms
lin· Linux- Applications
- bash · Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 5 / 5
Proposed verifier
Grader copies result onto NTFS and case-insensitive APFS images: zero errors, file count preserved; renames.csv old→new equals expected rule application; unaffected names unchanged; hashes preserved.
Proposed partial credit
30% copies cleanly to both; 40% rule-exact renames; 20% renames.csv; 10% untouched names stable
R01.02.01.02-T10 Renumber an image sequence with gaps safely
Original instruction
~/fixtures/seq has frames shot_0001.exr … shot_0480.exr with 37 missing numbers. Renumber them contiguously starting at shot_1001.exr in original order without overwriting any file mid-way, and write map.csv old,new.
- Platforms
mac· macOSlin· Linux- Applications
- bash
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Result names 1001..1443 contiguous; hash at each new index equals hash of the k-th original in order; map.csv exact; total count 443. Any lost or duplicated hash -> 0.
Proposed partial credit
50% contiguous correct order; 30% no data loss; 20% map.csv
R01.02.01.02-T11 Implement a 9-rule cleanup policy for a shared drive
Original instruction
input/rules.md is a plain-language policy (9 rules with precedence: client folders, fiscal-year folders, 'FINAL' detection, draft versioning v1..vn, personal files to quarantine, etc.) for ~/fixtures/shared (2,000 files). Apply it and write manifest.csv old_path,new_path,rule_id.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
long· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Per-file new_path and rule_id vs expected (precedence conflicts seeded for 140 files); hash multiset unchanged; manifest covers every file exactly once.
Proposed partial credit
60% per-file path accuracy; 25% rule attribution; 15% manifest complete and data intact
R01.02.01.02-T12 Export a Photos album into camera/date folders
Original instruction
Export the unmodified originals of the Photos album 'Wedding' (210 items incl. Live Photos) with Photos' 'Export Unmodified Original' and File Name 'Use File Name', then arrange them into ~/Export/<CameraModel>/<YYYY-MM-DD>/ via the terminal, keeping Live Photo .HEIC/.MOV pairs together.
- Platforms
mac· macOS- Applications
- Photos · bash · exiftool
- Interfaces
desk· Desktop GUIterm· Terminal- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clickcode· Code & commandsmulti· Cross-app- Work product
WP09· Files & folders- Conditions
multiapp· Multi-app- Proposed difficulty
- 4 / 5
Proposed verifier
Exported set hash-equals the album's originals (no edited renders); final paths equal expected camera/date layout; every Live Photo pair co-located. osxphotos/AppleScript export flagged by exec audit (Photos step must be GUI).
Proposed partial credit
40% correct originals exported; 40% folder layout; 20% Live Photo pairs together
R01.02.01.02-T13 Route files by Finder tag combination
Original instruction
In ~/fixtures/inbox (300 files) move files tagged Red only to ~/Urgent, Green only to ~/Done, both Red and Green to ~/Review, and leave untagged files. Tags are Finder tags (xattr); preserve tags on moved files.
- Platforms
mac· macOS- Applications
- bash · tag · mdfind
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Destination sets equal ground truth by tag combination; kMDItemUserTags preserved after move; untagged and other-colour files remain in inbox.
Proposed partial credit
60% correct destinations; 25% tags preserved; 15% untouched files remain
R01.02.01.02-T14 Reclaim space with APFS clones for duplicate media
Original instruction
~/fixtures/media has 40 GB of video with many duplicates across project folders. Replace each duplicate (same sha256) with an APFS clone of the first copy so every path still exists, then report reclaimed bytes in reclaimed.txt.
- Platforms
mac· macOS- Applications
- bash · cp -c
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
All original paths exist with original hashes; duplicates share extents (grader checks clone status via fcntl/F_LOG2PHYS or df delta ≥95% of expected); reclaimed.txt within ±1% of true savings. Symlinks or hard links instead of clones score 50%.
Proposed partial credit
40% all paths intact; 40% duplicates cloned; 20% reclaimed bytes reported
R01.02.01.02-T15 Prefix folders in a given order using Explorer rename
Original instruction
In D:\Course there are 12 module folders. Rename them in File Explorer to '01 - <name>' … '12 - <name>' following the order in order.txt, using F2 and Tab to move between items.
- Platforms
win· Windows- Applications
- File Explorer
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
key· Shortcutstype· Text & forms- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Folder names equal expected list; folder contents unchanged (hash manifest). cmd/PowerShell blocked by AppLocker; Sysmon detects Rename-Item/ren/move, and rename events must be attributed to explorer.exe, else 0.
Proposed partial credit
80% folders correctly prefixed (per-folder); 20% contents untouched
R01.02.01.02-T16 Multi-rule rename in Bulk Rename Utility
Original instruction
Use Bulk Rename Utility on D:\Scans (90 PDFs) to: remove the first 4 characters, replace spaces with '-', append the file's modified date as _YYYYMMDD, and lowercase extensions. Preview first, then rename.
- Platforms
win· Windows- Applications
- Bulk Rename Utility
- Interfaces
desk· Desktop GUI- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Name→hash map equals expected for all 90 files (dates from mtime, not creation); cmd/PowerShell blocked by AppLocker; Sysmon detects PowerShell/ren, and renames must be attributed to the BRU process, else 0.
Proposed partial credit
25% prefix removed; 25% spaces replaced; 30% date suffix; 20% lowercase extension
R01.02.01.02-T17 Apply a rename map with validation and idempotence
Original instruction
Apply input/map.csv (old,new; 600 rows) inside ~/fixtures/docs. Skip rows whose source is missing, never overwrite an existing target, log every skip to errors.log with a reason code, and make the script safe to re-run (second run changes nothing).
- Platforms
mac· macOSlin· Linux- Applications
- bash · Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Final tree equals expected; errors.log lines equal expected (MISSING_SRC, TARGET_EXISTS) set; grader re-runs the agent's script and diffs: no changes. Chains (a→b, b→c) handled without loss.
Proposed partial credit
50% correct final tree; 25% errors.log; 25% idempotent re-run
R01.02.01.02-T18 Flatten a deep tree with path-encoded names
Original instruction
Flatten ~/fixtures/deep (depth up to 6, 1,500 files) into ~/flat, naming each file '<dir1>__<dir2>__…__<name>'. If the name exceeds 120 characters, truncate the middle and add an 8-char sha1 of the full relative path before the extension.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · PowerShell
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
~/flat names equal expected per file; no collisions; content hashes match sources; source tree left intact (copy, not move).
Proposed partial credit
50% names correct for short paths; 30% truncation+hash rule; 20% source intact and contents equal
R01.02.01.02-T19 Log retention cleanup with dry run and confirmation
Original instruction
In ~/fixtures/logs remove .log files older than 30 days except those listed in keep.lst. First write dryrun.txt listing what would be removed and stop to ask for confirmation; after approval move them to the Trash (not rm).
- Platforms
mac· macOSlin· Linux- Applications
- bash · trash
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
risk· Irreversible/risky- Proposed difficulty
- 3 / 5
Proposed verifier
dryrun.txt set equals expected; ask_user event precedes any removal; after simulated approval those files are in ~/.Trash (or XDG trash) with hashes intact; keep.lst files and recent logs untouched.
Proposed partial credit
30% dry-run list exact; 30% confirmation before removal; 30% moved to Trash; 10% keep list honored
R01.02.01.02-T20 Reorganize a photographer's RAW+JPEG archive by event
Original instruction
Reorganize ~/fixtures/archive (8,000 files: CR3/NEF RAW, JPEG, XMP sidecars) into <Year>/<YYYY-MM-DD>_<Event>/ using events.csv date ranges (overlaps resolved by the narrower range). Keep RAW+JPEG pairs and their .xmp together; unmatched dates go to _Unsorted/<YYYY-MM>.
- Platforms
mac· macOSlin· Linuxwin· Windows- Applications
- bash · exiftool · Python
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP09· Files & folders- Conditions
long· Long-horizon- Proposed difficulty
- 5 / 5
Proposed verifier
Per-file path equals expected (capture date from EXIF; XMP follows its RAW stem even if its own mtime differs); hash multiset unchanged; pairs co-located 100%.
Proposed partial credit
50% per-file path accuracy; 20% overlap resolution; 20% pairs/sidecars together; 10% no data loss
Mapped research references
Existing benchmark-to-class links from the research catalog. They are not record-level annotations, executions or product endorsements.