I am trying to find a way to have the results of an ls command be printed in a case insensitive manner.
currently an ls command results in:
Apple
Boy
Chart
Dock
apples
boys
charts
docks
what i want is this:
Apple
apples
Boy
boys
Chart
charts
Dock
docks
is this possible?
ls
(at least if you're using the GNU coreutils version; ls --version
to check that) sorts file names according to the current locale.
The set of available locales varies from system to system (locale -a
for a list), but on my system this:
LC_COLLATE=en_US.utf8 ls
sorts names with a
and A
before b
and B
-- though it might not be exactly in the order you're looking for.
This works even when ls
lists files in multiple columns, something that's difficult to do with sort -f
.
(I have $LC_COLLATE
set to C
specifically so that locale-sensitive sorting is done in ASCII order.)
As a follow up to [Keith Thompson]'s answer, I tested on a Linux system and LC_COLLATE=C did not work for me, but LC_COLLATE="en_US.UTF-8" did. I put the following in my startup script:
export LANG=en_US.UTF-8
export LC_COLLATE="en_US.UTF-8"
This did not work on OS X.
Just pipe the result to sort -f
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With