Sample Header Ad - 728x90

zsh - Sort files expansion in MacOS Terminal like in Finder: numerically and case-insensitively

1 vote
2 answers
351 views
Is it possible in MacOS Terminal to have the sort order numerically and case-insensitively, almost like in Finder? I'm on MacOS 14 Sonoma, using Terminal app with zsh 5.9 and oh-my-zsh. I'm trying to execute some command line for all files in a specific folder. Please compare: | My desired sort order | MacOS Finder sort by name order | | -------- | -------------- | | bar.jpg
bar-2.jpg
bar-10.jpg
foo.jpg
foo-1.jpg
foo-2.jpg
foo-10.jpg
STA.jpg
STA-3.jpg
STA-20.jpg | bar-2.jpg
bar-10.jpg
bar.jpg
foo-1.jpg
foo-2.jpg
foo-10.jpg
foo.jpg
STA-3.jpg
STA-20.jpg
STA.jpg | The Finder way would be fine, but not ideal, as it leaves *foo.jpg* below *foo-1.jpg* Here are commands I tried: | for file in *; do echo $file; done | for file in *(n); do echo $file; done | | -------- | -------------- | | STA-20.jpg
STA-3.jpg
STA.jpg
bar-10.jpg
bar-2.jpg
bar.jpg
foo-1.jpg
foo-10.jpg
foo-2.jpg
foo.jpg|STA-3.jpg
STA-20.jpg
STA.jpg
bar-2.jpg
bar-10.jpg
bar.jpg
foo-1.jpg
foo-2.jpg
foo-10.jpg
foo.jpg | The latter brings in numerical sort order and is the closest I could get to Finder, but leaves uppercase *STA** files above lowercase *bar** ones. I tried to use glob qualifier cause it looked like the simplest syntax, but if it's not achievable – please suggest other ways to execute commands on multiple files after sorting them the way I want.
Asked by Dmitrii Kuznetsov (63 rep)
Nov 14, 2023, 08:41 PM
Last activity: Nov 15, 2023, 10:22 PM