22

Я хочу объединить кучу файлов в порядке имен файлов.

Можно ли предположить, что это даст мне их в алфавитно-цифровом порядке?

cat * 

т.е. тот же порядок, что дает ls .

2 ответа2

22

Краткий ответ: да, будет.

Со страницы руководства bash :

После разделения слов, если не установлена опция -f (см. Построение набора), Bash сканирует каждое слово на наличие символов «*», «?» И «[». Если появляется один из этих символов, слово считается шаблоном и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону.

7

Короткий ответ - да, но вы должны знать, что, по его мнению, должен быть алфавитно-цифровой порядок, поскольку он может не соответствовать естественному порядку, который вы имеете в виду.

Например, запустите некоторый тест на то, как обрабатываются верхний и нижний регистр, чтобы узнать в вашей системе, а также последовательности чисел.

Распространенная проблема, с которой я столкнулся при упорядочении списков файлов, возвращаемых глобусом, - это пронумерованные файлы. Мне часто дают файлы, пронумерованные как:

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 и т.д.).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .