Paste a file listing — one path per line, optionally with a size and a date column — and get back a complete bulk-rename plan: a source → target table, a CSV index, and a bash or PowerShell script you can read before you run it. Build the naming convention from tokens ({seq}, {date}, {custodian}, {type}, {stem}, {ext}) and see the exact result for every file. This tool has no filesystem access, so it renames nothing: it produces a plan you approve. Crucially, if your convention would map two different files onto the same target name, those entries are BLOCKED and reported instead of quietly overwriting each other. Everything runs on your device — a discovery dump never leaves it.
Worked example
BULK RENAME & INDEX PLAN
Nothing has been renamed. This is a plan you review before acting.
CONVENTION
filename: {seq}_{date}_{custodian}_{stem}{ext}
folder: REVIEW/{custodian}/{type}
custodian: SMITH
SUMMARY
Files in ............. 7
Renames planned ...... 7
Entries blocked ...... 0
Duplicates flagged ... 2
Collisions blocked ... 0
Unknown types ........ 1
Missing dates ........ 4
RENAME PLAN (source -> target)
001 C:\Discovery\Smith\2023-04-11 Contract Draft.docx -> REVIEW/SMITH/documents/001_2023-04-11_SMITH_2023-04-11 Contract Draft.docx
002 C:\Discovery\Smith\budget FY24.xlsx -> REVIEW/SMITH/spreadsheets/002_NO-DATE_SMITH_budget FY24.xlsx
003 C:\Discovery\Smith\meeting notes.txt -> REVIEW/SMITH/documents/003_NO-DATE_SMITH_meeting notes.txt
004 C:\Discovery\Smith\backup\budget FY24.xlsx -> REVIEW/SMITH/spreadsheets/004_NO-DATE_SMITH_budget FY24.xlsx
005 C:\Discovery\Smith\photo_20230512.jpg -> REVIEW/SMITH/images/005_2023-05-12_SMITH_photo_20230512.jpg
006 C:\Discovery\Smith\deck.pptx -> REVIEW/SMITH/presentations/006_2023-05-02_SMITH_deck.pptx
007 C:\Discovery\Smith\export.dat -> REVIEW/SMITH/other/007_NO-DATE_SMITH_export.dat
COLLISIONS BLOCKED (0)
None. Every target name is unique.
POSSIBLE DUPLICATES (2 file(s) flagged)
Matched on filename, and on filename + size where a size was given.
This is NOT content-based deduplication: two files with the same name and
size can still differ. A real dedupe needs a hash of the file contents,
which this tool cannot compute because it never reads your files.
Nothing here is marked for deletion — these are for your review.
same name: budget fy24.xlsx
C:\Discovery\Smith\budget FY24.xlsx
C:\Discovery\Smith\backup\budget FY24.xlsx
same name + size: budget fy24.xlsx size=99012
C:\Discovery\Smith\budget FY24.xlsx
C:\Discovery\Smith\backup\budget FY24.xlsx
INDEX (CSV)
seq,source_path,target_path,filename,extension,doc_type,size_bytes,date,date_source,status,flags
1,"C:\Discovery\Smith\2023-04-11 Contract Draft.docx","REVIEW/SMITH/documents/001_2023-04-11_SMITH_2023-04-11 Contract Draft.docx","2023-04-11 Contract Draft.docx","docx","documents","18234","2023-04-11","column","planned",""
2,"C:\Discovery\Smith\budget FY24.xlsx","REVIEW/SMITH/spreadsheets/002_NO-DATE_SMITH_budget FY24.xlsx","budget FY24.xlsx","xlsx","spreadsheets","99012","NO-DATE","none","planned","no-date possible-duplicate"
3,"C:\Discovery\Smith\meeting notes.txt","REVIEW/SMITH/documents/003_NO-DATE_SMITH_meeting notes.txt","meeting notes.txt","txt","documents","2201","NO-DATE","none","planned","no-date"
4,"C:\Discovery\Smith\backup\budget FY24.xlsx","REVIEW/SMITH/spreadsheets/004_NO-DATE_SMITH_budget FY24.xlsx","budget FY24.xlsx","xlsx","spreadsheets","99012","NO-DATE","none","planned","no-date possible-duplicate"
5,"C:\Discovery\Smith\photo_20230512.jpg","REVIEW/SMITH/images/005_2023-05-12_SMITH_photo_20230512.jpg","photo_20230512.jpg","jpg","images","812345","2023-05-12","filename","planned",""
6,"C:\Discovery\Smith\deck.pptx","REVIEW/SMITH/presentations/006_2023-05-02_SMITH_deck.pptx","deck.pptx","pptx","presentations","44100","2023-05-02","column","planned",""
7,"C:\Discovery\Smith\export.dat","REVIEW/SMITH/other/007_NO-DATE_SMITH_export.dat","export.dat","dat","other","512","NO-DATE","none","planned","unknown-type no-date"
SCRIPT (bash) — review before running
#!/usr/bin/env bash
# Generated by The GG Network - Bulk Rename & Index Planner.
# NOTHING HAS BEEN RENAMED YET. Read this file before you run it.
# Every path is single-quoted, so a filename cannot execute anything:
# $(...), backticks, ; and globs are all inert inside '...'.
# 'mv -n' refuses to overwrite; '--' protects names starting with '-'.
set -euo pipefail
mkdir -p -- 'REVIEW/SMITH/documents'
mkdir -p -- 'REVIEW/SMITH/images'
mkdir -p -- 'REVIEW/SMITH/other'
mkdir -p -- 'REVIEW/SMITH/presentations'
mkdir -p -- 'REVIEW/SMITH/spreadsheets'
mv -n -- 'C:\Discovery\Smith\2023-04-11 Contract Draft.docx' 'REVIEW/SMITH/documents/001_2023-04-11_SMITH_2023-04-11 Contract Draft.docx'
mv -n -- 'C:\Discovery\Smith\budget FY24.xlsx' 'REVIEW/SMITH/spreadsheets/002_NO-DATE_SMITH_budget FY24.xlsx'
mv -n -- 'C:\Discovery\Smith\meeting notes.txt' 'REVIEW/SMITH/documents/003_NO-DATE_SMITH_meeting notes.txt'
mv -n -- 'C:\Discovery\Smith\backup\budget FY24.xlsx' 'REVIEW/SMITH/spreadsheets/004_NO-DATE_SMITH_budget FY24.xlsx'
mv -n -- 'C:\Discovery\Smith\photo_20230512.jpg' 'REVIEW/SMITH/images/005_2023-05-12_SMITH_photo_20230512.jpg'
mv -n -- 'C:\Discovery\Smith\deck.pptx' 'REVIEW/SMITH/presentations/006_2023-05-02_SMITH_deck.pptx'
mv -n -- 'C:\Discovery\Smith\export.dat' 'REVIEW/SMITH/other/007_NO-DATE_SMITH_export.dat'
NOTES
- 4 file(s) had no usable date: NO-DATE is written into the name and the file is flagged. No date is ever invented — this tool has no clock.
Frequently asked
Does this actually rename my files?
No. It cannot — it has no filesystem access. It produces a plan, an index and a script. You read the script and decide whether to run it.
What if two files would get the same new name?
That is a collision, and it would destroy data. Those entries are blocked: they are left out of the rename plan and the script, and listed under COLLISIONS BLOCKED so you can fix the convention (usually by adding {seq}).
Is the duplicate detection real deduplication?
No, and it is important to be clear about this. It matches on filename, and on filename + size when you supply a size column. Two files with the same name and size can still have different contents. Real dedupe needs a content hash, which requires reading the files — something this tool cannot do. Duplicates are flagged for your review and never marked for deletion.
Is the generated script safe to run blindly?
No script is. Read it first. Every path is single-quoted for the target shell so a filename cannot execute anything, and the move commands refuse to overwrite an existing file — but you should still review it.
What if a file has no date?
The {date} token renders as NO-DATE and the file is flagged. The tool has no clock and will never substitute today's date or guess one from an unrelated number.
How is the document type decided?
From the file extension only — never from words in the filename. An extension not in the table becomes 'other' rather than a guess.