LINUX.ORG.RU

find выдаёт по разному отсортированный результат

 , ,


0

1

на одном и том-же наборе файлов на разных ПК.
Вероятно это нормально и надо добавлять ... | sort.
Или есть нюанс?

★★★★☆

Последнее исправление: superuser (всего исправлений: 5)

Ну, вообще, на сортировку влияют настройки локали. Если на обоих машинах локаль одна и та же, то с большой вероятностью это можно отбросить.

yars068 ★★★★★
()

Да. find ищет файлы, а не сортирует, это лишняя работа о которой не просили. Он обходит директорию так, как там лежат файлы, а это в большинстве ФС не упорядоченная последовательность.

legolegs ★★★★★
()
Ответ на: комментарий от yars068

К делу не относится, но в пятом баше наконец закончилась эта вакханалия:

shopt globasciiranges
globasciiranges         on

А в четвёртом надо включать:

echo 'shopt -s globasciiranges' >> ~/.bashrc
papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

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

firkax ★★★★★
()

Оффтоп. Ага, был такой смешной прикол, когда в glibc изменился collation. Весело было мигрировать всякие там БД :) postgres прям кое-где отвалился (надо было индексы перестраивать). Хорошая тема, знаем. А DBA так и живо помнят :)

Не с этим ли связано то, что сортировка в выхлопе команды разная? :)

paddlewan
()
Ответ на: комментарий от superuser

Именно так. Попробуйте на досуге сделать ls в директории на пару десятков миллионов файлов и find. ls при помощи опций тоже можно попросить не заниматься сортировкой, но по дефолту оно сортирует :(

cobold ★★★★★
()
Ответ на: комментарий от firkax

Я ман не читал, просто использую LANG=C.UTF-8, чтобы совсем абстрагироваться от проблемы. Был уверен, что вышеданная настройка делает что-то по сути то же самое.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

Может она и делает то же самое но в мане что-то странное написано.

ls -al /bin/[s-y]h находит sh

ls -al /bin/[S-Y]h не находит sh

от команды shopt -s globasciiranges вышеописанное не меняется.

firkax ★★★★★
()
Ответ на: комментарий от legolegs

это лишняя работа о которой не просили

С одной стороны да, с другой — сортировка на этапе обхода дерева каталогов должна быть дешевле, чем для плоского списка файлов, т.к. нет необходимости держать весь список в памяти.

Плюс предсказуемость сама по себе является ценным качеством. Может и стоит ради этого сделать лишнюю работу.

Zeta_Gundam
()
Последнее исправление: Zeta_Gundam (всего исправлений: 1)
Ответ на: комментарий от Zeta_Gundam

Плюс предсказуемость сама по себе является ценным качеством

Нет, это лишит повода применения термоанализа

superuser ★★★★☆
() автор топика
Ответ на: комментарий от firkax

В доке описание какое-то непонятное. Но мне кажется, что эта часть:

b will not collate between A and B

указывает на то, что сортировка не будет A b B (естественной). То есть опция отменяет эффекты локали, а без них будет использоваться ASCII, в котором A B Z b.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)

find выдаёт по разному отсортированный результат

Первая мысль, что ТС взял find написанный на расте.

ox55ff ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария