Я хочу объединить кучу файлов в порядке имен файлов.
Можно ли предположить, что это даст мне их в алфавитно-цифровом порядке?
cat *
т.е. тот же порядок, что дает ls
.
Краткий ответ: да, будет.
Со страницы руководства bash :
После разделения слов, если не установлена опция -f (см. Построение набора), Bash сканирует каждое слово на наличие символов «*», «?» И «[». Если появляется один из этих символов, слово считается шаблоном и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону.
Короткий ответ - да, но вы должны знать, что, по его мнению, должен быть алфавитно-цифровой порядок, поскольку он может не соответствовать естественному порядку, который вы имеете в виду.
Например, запустите некоторый тест на то, как обрабатываются верхний и нижний регистр, чтобы узнать в вашей системе, а также последовательности чисел.
Распространенная проблема, с которой я столкнулся при упорядочении списков файлов, возвращаемых глобусом, - это пронумерованные файлы. Мне часто дают файлы, пронумерованные как:
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
и т.д.).