web-dev-qa-db-ja.com

globによって一致するファイルの順序

フォルダに次のファイルがあるとします

1.txt
2.txt
a.txt
b.txt
c.txt
 _

それらをプロセスするためにそれらのファイルとglobによってそれらのファイルと一致させると、例えば。

for f in *;do echo $f;done
 _

その後、Bashがそれらに一致する - マニュアルページに従って - アルファベット順に。

ただし、グロブのマッチング順序を定義するPOSIX規格はありますか。このようにして、POSIXに準拠している限り、私はあらゆるシェルの一定のマッチング順序に頼ることができました。

2
nautical

はい、POSIXによって注文が必要です。から POSIX SPEC

パターンが既存のファイル名またはパス名と一致する場合、パターンはそれらのファイル名とパス名に置き換えられなければならない現在のロケールに有効な照合シーケンスに従ってソートされます。[強調された追加]

一貫した結果を保証するには、ロケールを指定する必要があります。プログラミングのために、設定LC_COLLATE=Cは一般的な選択です。

2
John1024