2013-07-01 3 views
2

Если я запустил find (в частности, Ubuntu), могу ли я ожидать, что он даст мне одинаковый порядок результатов каждый раз? (При условии, конечно, что сами файлы не изменились.)Разве unix 'find' дает тот же порядок каждый раз?

Другими словами, если я бегу

$ find foo 

и это дает мне

bar.txt 
foo.txt 

можно ожидать, что оно никогда не даст мне

foo.txt 
bar.txt 

?

ответ

3

Ответ «возможно», но вы не должны полагаться на него, потому что на него может повлиять любое количество вещей.

Какой заказ вы предпочитаете? Решите об этом, а затем используйте команду find (возможно, она отправлена ​​в sort), которая воспроизводит полученный результат.

+0

Это хороший звонок. для меня это не имеет значения, если это то же самое; поэтому сортировка на все, что не изменится (например, имя файла), будет прекрасной. – mfrankli

0

Порядок файлов определяется точными деталями формата файловой системы и драйвера файловой системы. Вы не можете полагаться на это. В зависимости от файловой системы и операционной системы, это вещи, которые могут изменить порядок:

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

Если вы хотите воспроизводимый заказ, соберите результаты. find … | sort будет хорошо, если ни одно из имен файлов не содержит символы новой строки.