Похоже, что в большинстве ситуаций ls будет читать весь каталог перед созданием любого вывода - обычно потому, что ему нужно отсортировать или разбить на столбцы вывод. Обычно это нормально, но при чтении очень большого каталога с медленного сетевого сервера это приводит к зависанию ls.
Есть ли способ заставить ls печатать частичный вывод по мере его продвижения? Я пробовал следующее в Mac OS X 10.6.8, но, похоже, они не работают:
ls -lf
ls -1f
На всякий случай, если мне непонятно, что я хочу, следующий сценарий Perl делает примерно то, что нужно:
opendir(DIR, ".") or die "can't opendir $dir: $!";
while($filename = readdir DIR) {
print $filename, "\n";
}
closedir DIR;
... только я хотел бы иметь возможность использовать -l
, -lO
, и не надо писать самому!
Вы на правильном пути с -f
опция, предотвращающая сортировку вывода, но страница руководства отмечает, что с -l
,
Если вывод выводится на терминал, общая сумма для всех размеров файлов выводится в строке перед длинным списком.
Вы можете предотвратить это суммирование (что потребует stat
сначала все файлы в каталоге), направив вывод в cat
, чтобы предотвратить вывод на терминал.
Я не знаю почему -1f
форма у вас не работает; мне кажется, он отлично работает на GNU ls. Еще одна особенность GNU ls (которая может не относиться к вам) заключается в том, что -lf
такой же как -f
, но -fl
это комбинация -f
и -l
(длинный, несортированный список). Попробуйте изменить порядок некоторых из ваших флагов, чтобы убедиться, что это не проблема для вас.
Вы пробовали найти?
Пытаться
find . -ls