В extfs, если в каталоге есть только создания файлов и не-удаления, я ожидаю, что find . -type f
отобразит файлы либо в хронологическом порядке их создания (или mtime
), либо, если нет, впо крайней мере, в обратном хронологическом порядке ... в зависимости от того, как просматривается содержимое каталога.
Но это не то поведение, которое я вижу.
Следующий код, например, создает новый набор каталогов и файлов:
#!/bin/bash -u
for i in a/ a/{1,2,3,4,5} b/ b/{1,2,3,4,5}; do
if echo "$i" | egrep -q "/$"; then
echo "Creating dir $i"
mkdir -p "$i"
else
echo "Creating file $i"
touch "$i"
fi
sleep 0.500
done
Вывод приведенного выше фрагмента:
Creating dir a/
Creating file a/1
Creating file a/2
Creating file a/3
Creating file a/4
Creating file a/5
Creating dir b/
Creating file b/1
Creating file b/2
Creating file b/3
Creating file b/4
Creating file b/5
Однако find
перечисляет файлы в несколько случайном порядке.Например, a/2
не следует a/1
, а b/2
не следует b/1
:
$ find . -type f
./a/1
./a/3
./a/4
./a/2 <----
./a/5
./b/1
./b/3
./b/4
./b/2 <----
./b/5
Есть идеи, почему это должно происходить?
Моя основная проблема: У меня очень большой том, в котором хранятся сотни тысяч файлов.Мне нужно просмотреть эти файлы и каталоги в порядке их создания / изменения (mtime
) и передать каждый файл другому процессу для дальнейшей обработки.Но я не обязательно хочу сначала создать временный список из этого большого набора файлов, а затем отсортировать его на основе mtime
, прежде чем отправлять его в мой процесс.