Odpowiedzi:
Krótka odpowiedź: Tak.
Ze strony podręcznika użytkownika bash :
Po podziale słów, chyba że ustawiono opcję -f (zobacz Wbudowany zestaw), Bash skanuje każde słowo pod kątem znaków „*”, „?” I „[”. Jeśli pojawi się jeden z tych znaków, to słowo jest traktowane jako wzór i zastępowane alfabetycznie uporządkowaną listą nazw plików pasujących do wzorca.
ls
w tym samym systemie.
Krótka odpowiedź brzmi tak, ale musisz zdawać sobie sprawę z tego, co według niego powinien być porządek alfanumeryczny, ponieważ może nie odpowiadać porządkowi naturalnemu, o którym myślisz.
Na przykład uruchom test sprawdzający, jak obsługiwane są wielkie i małe litery, aby dowiedzieć się w systemie, a także sekwencje liczb.
Częstym problemem, na jaki natknąłem się podczas porządkowania list plików zwracanych przez glob, są pliki numerowane. Często dostaję pliki o numerach takich jak:
blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt
Jednak glob używający *
nie zwróci ich w tej kolejności, zamiast tego otrzymasz coś takiego:
blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...
Tak - aby uniknąć tego problemu będziesz albo trzeba zrobić jakąś manipulację na zwróconej listy plików lub plików przemianowania tak że jednocyfrowych mają zero (tj blah_01.txt
, blah_02.txt
itp).
$LC_COLLATE
).