0

目前,在我的 bash 脚本中,我打印出目录中所有文件的列表。问题是,所有以大写开头的文件都先打印,然后再打印小写。我怎样才能组合成一个按字母顺序排列的列表?这是一个或多或少的系统文件列表,我无法将它们重命名为相同的大小写。

编辑:我需要在每个文件上运行一个 if 所以这就是我使用循环的原因。我不能全部展示出来。

例子:

for file in *.txt
do
    if grep -Fxq "$file" disabled.dat
  then
     echo -e "$GREEN${file}$NC"
  else
     echo "${file}"
  fi
done

输出:

Apple.txt
Banana.txt
Pear.txt
aardvark.txt
snake.txt
zebra.txt

我是 bash 新手,因此将不胜感激所有帮助。谢谢!

4

1 回答 1

6

更改操作系统使用的排序规则。

$ LC_COLLATE=C bash -c 'echo *.txt'
Apple.txt Banana.txt Pear.txt aardvark.txt snake.txt zebra.txt
$ LC_COLLATE=en_US bash -c 'echo *.txt'
aardvark.txt Apple.txt Banana.txt Pear.txt snake.txt zebra.txt
于 2013-06-29T05:26:41.087 回答