Назад | Перейти на главную страницу

Как я могу заставить ls печатать вывод в процессе?

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

Есть ли способ заставить ls печатать частичный вывод по мере его продвижения? Я пробовал следующее в Mac OS X 10.6.8, но, похоже, они не работают:

На всякий случай, если мне непонятно, что я хочу, следующий сценарий 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