0

現在、私の bash スクリプトでは、ディレクトリ内のすべてのファイルのリストを出力しています。問題は、大文字で始まるすべてのファイルが最初に印刷され、次に小文字が印刷されることです。組み合わせて 1 つのアルファベット順のリストを作成するにはどうすればよいですか? これは多かれ少なかれシステム ファイルのリストであり、すべて同じケースに名前を変更することはできません。

編集:各ファイルで 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 に答える