Многие сразу назовут
find . -type d -depth 1
Но в небольшой папке на 100 гиг и всего 150 директориями вывод занял почти 2 минуты. Делается слишком много лишней работы.
Более быстрые варианты:
ls -1F | grep "/"
ls -lA | grep "^d" | awk '{print $9}'
Но будет показывать в том числе директории с точкой в начале. Если не надо - нужно доработать grep-правило.
И всё-таки мне непонятно, если поиску сказано проверять только на 1 уровень, какого он лезет глубже..
Тут - что ни делай - всё равно придётся для каждой записи в каталоге делать stat(). Похоже, старый совет не разводить огромных каталогов, а делать дерево файлов поглубже - всё ещё актуален.
ОтветитьУдалитьЯ чуть про другое...
ОтветитьУдалитьls -1|wc -l
154
И занимает это доли секунды. С какого перепугу find делает тоже самое пару минут - вопрос.
Другое дело, что если в каталоге больше 100к файлов - очистить его можно только через find . -exec rm {} \; - просто rm не может пережевать такой большой список аргументов.