Я хочу объединить кучу файлов в порядке имен файлов.
Можно ли предположить, что это даст мне их в алфавитно-цифровом порядке?
cat *
т.е. тот же порядок, который ls
дает.
Я хочу объединить кучу файлов в порядке имен файлов.
Можно ли предположить, что это даст мне их в алфавитно-цифровом порядке?
cat *
т.е. тот же порядок, который ls
дает.
Ответы:
Краткий ответ: да, будет.
Со страницы руководства bash :
После разделения слов, если не установлена опция -f (см. Построение набора), Bash сканирует каждое слово на наличие символов «*», «?» И «[». Если появляется один из этих символов, слово считается шаблоном и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону.
ls
в той же системе.
Краткий ответ - да, но вы должны знать, что, по его мнению, должен быть алфавитно-цифровой порядок, поскольку он может не соответствовать естественному порядку, который вы имеете в виду.
Например, запустите некоторый тест на то, как обрабатываются верхний и нижний регистр, чтобы выяснить в вашей системе, а также последовательности чисел.
Распространенная проблема, с которой я столкнулся при упорядочении списков файлов, возвращаемых глобусом, - нумерованные файлы. Мне часто дают файлы, пронумерованные как:
blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt
Тем не менее, глобус с использованием *
не будет возвращать их в этом порядке, вместо этого вы получите что-то вроде:
blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...
Так что - чтобы избежать этой проблемы , вы будете должны сделать некоторые манипуляции на возвращаемом списке файлов или переименовывать файлы , так что однозначных цифр имеют ведущие нули (т.е. blah_01.txt
, blah_02.txt
и т.д.).
$LC_COLLATE
).