Расширение пути (расширение glob) возвращает список имен файлов, отсортированный в алфавитном порядке в соответствии с вашим текущим языковым стандартом. Если у вас есть что-то простое, например UTF-8
или C
, ваш порядок сортировки будет ASCII sorted . Это видно по результату ОП. Файл с именем 19.jpg
сортируется до 1.jpg
, потому что символ lt; точка> имеет более высокий лексикографический порядок, чем символ 9
.
Если вы хотите просмотреть свои файлы в другой сортировке порядок, тогда необходимо использовать другой подход.
При смелом предположении, что OP запрашивает просмотр файлов в порядке c сортировки, то есть упорядочивает имена в соответствии с номером в начале имя файла, вы можете сделать следующее:
while IFS= read -r -d '' file; do
echo "filename: $file"
done < <(find . -maxdepth 1 -type f -name '*.jpg' -print0 | sort -z -n)
Здесь мы используем find
для перечисления всех файлов в текущем каталоге (depth==1
), мы печатаем их с \0
в качестве разделителя , и используйте sort
, чтобы запросить запрошенную сортировку, указывая, что у нас есть \0
в качестве разделителя полей. Вместо использования for-l oop мы используем while-l oop для чтения информации.
См. BashPitFall001 Подробнее
примечание: sort -z
является расширением GNU