Чи відповідають файли * bash у буквено-цифровому порядку?


25

Я хочу об'єднати купу файлів разом у порядку назви файлів.

Чи можна припустити, що це дасть мені їх у буквено-цифровому порядку?

cat * 

тобто той самий порядок, який lsдає.

Відповіді:


26

Коротка відповідь: Так, так і буде.

З сторінки " bash man ":

Після розбиття слів, якщо не встановлено параметр -f (див. Набір вбудованих файлів), Bash сканує кожне слово на символи '*', '?' Та '['. Якщо з’являється один із цих символів, то слово вважається візерунком і замінюється алфавітно відсортованим списком імен файлів, що відповідають шаблону.


6
Зауважте, що "алфавіт" змінюється залежно від параметрів місцевості (зокрема $LC_COLLATE).
grawity

4
@grawity правда, але це призведе до того ж результату, що і в lsтій же системі.
BloodPhilia

8

Коротка відповідь - так, але вам потрібно знати, що він вважає алфавітно-цифровим порядком, оскільки він може не відповідати природному порядку, який ви маєте на увазі.

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

Поширена проблема, з якою у мене виникли впорядкування списків файлів, повернених глобусом, - це нумеровані файли. Мені часто дають файли, пронумеровані як:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.