按给定字符的出现次数排序文件名?

Order filenames by number of appereances of given character?

我想输出目录中的文件名列表,其中列表应按每个文件名中给定字符的出现次数降序排列。我如何使用 bash 执行此操作?

假设您想按文件名中 "a" 的出现次数排序:

for i in *; do; echo "`grep -o "a" <<< "$i" | wc -l` $i"; done | sort -r

结果

$ ls
carla
elaine
guybrush
herman
largo
leamon-head
lechuck
max
meathook
ozzie
sam
stan
voodoo

$ for i in *; do; echo "`grep -o "a" <<< "$i" | wc -l` $i"; done | sort -r
2 leamon-head
2 carla
1 stan
1 sam
1 meathook
1 max
1 largo
1 herman
1 elaine
0 voodoo
0 ozzie
0 lechuck
0 guybrush