This comes up more often than you would think. A client asks for a list of the photos you delivered. An accountant wants a table of every PDF in a project folder. You are moving to a new drive and you want a record of what was on the old one. In every case the answer is the same shape: turn a folder into rows and columns.
macOS does not make this obvious. Finder shows you files, but it will not export a list. So people copy names by hand, or take a screenshot, or give up. You do not have to do any of that.
The quick way: Terminal
If you only need file names and you are comfortable in Terminal, one command gets you close:
ls -la ~/Documents/Project > filelist.txt
That writes a text file with names, sizes, and dates. It is fine for a rough dump. The trouble starts when you want it as real columns you can sort in Numbers or Excel. ls output is space-aligned, not comma-separated, so it does not import cleanly. You can push it further:
find . -type f -printf '%p,%s,%t\n' > files.csv
But the BSD version of find on macOS does not support -printf, so that line fails, and you end up chaining stat and awk together. At that point you are writing a small script to do a small thing, and it still will not capture image dimensions, EXIF dates, or checksums.
What a proper file list actually needs
A useful export is more than names. Depending on the job, you usually want some mix of:
- Name and full path so you can find the file again.
- Size in bytes, and ideally a human-readable version too.
- Created and modified dates, not just one of them.
- Kind or extension so you can filter to just the images or just the PDFs.
- Image and video specifics: pixel dimensions, duration, camera model.
- A checksum if the list is going to prove that two copies match.
Once your requirements grow past "names and sizes", the Terminal route stops being worth it. This is the gap FileLister fills.
The direct way: scan and export
FileLister is a Mac app built for exactly this. You point it at a folder, it reads everything inside, and you export the result to the format the other person actually asked for. The steps are short:
- Open FileLister and drag your folder onto the window, or use Add Folder.
- Wait for the scan. On Apple Silicon it handles a hundred thousand files in well under a minute.
- Pick the columns you care about. Turn off the ones you do not.
- Choose Export and select CSV, Excel, JSON, HTML, PDF, Markdown, or plain text.
If you export to Excel, thumbnails come along for image files, which is handy when the list is a photo delivery and the recipient wants to see what each row is. CSV is the right pick when the list is going into another system. JSON is what you want if a script is going to read it later.
Picking the right format
A quick rule of thumb:
- CSV for anything that will be opened in Numbers, Excel, or Google Sheets, or imported into a database.
- Excel when you want thumbnails and formatting in one file, ready to send.
- JSON when a program, not a person, is the reader.
- PDF or HTML when the list is a deliverable someone will just look at.
- Markdown when it is going into documentation or a wiki.
If you are unsure which columns matter, export a few extra. It is easier to hide a column in a spreadsheet than to run the scan again.
When you have to do this regularly
If turning a folder into a table is a monthly chore, set it up once and stop thinking about it. FileLister has full Shortcuts support, so you can build a Shortcut that scans a fixed folder and drops a dated CSV into a reports directory. Run it on a schedule or from a menu, and the file list writes itself.
The one-liner in Terminal is still the fastest thing for a throwaway list of names. For anything you will send to another human, or run more than once, a real catalog saves the fiddling.