Вы можете прочитать об индексе хэш-дерева, используемом для каталогов здесь.
Линейный массив записей каталогов не очень хорош для производительности, поэтому в ext3 была добавлена новая функция, обеспечивающая более быстрое (но своеобразное) сбалансированное дерево, ключом которого является хэш имени записи каталога.
find. -maxdepth 1 -type f -ls
Это даст вам обычные файлы в текущем каталоге в формате, похожем на то, что вы получили бы с ls -lisa
(, но показывает только обычные файлы, благодаря -type -f
в командной строке ).
Обратите внимание, что -ls
(, представленные BSD ), и -maxdepth
(, представленные GNU find
), не являются -стандартными (, хотя теперь распространенными )расширениями. POSIXly, вы можете написать это:
find. ! -name. -prune -type f -exec ls -ldi {} +
(который также имеет преимущество сортировки списка файлов, хотя, возможно, в больших независимых кусках, если в текущем каталоге имеется большое количество файлов ).
Хорошо, когда вы используете -a показывает все, что скрыто; скрытые файлы и папки. Вместо ls вы, вероятно, захотите использовать команду find. Это должно помочь вам начать:
find -type f -exec ls -la {} \;
Сначала вам нужно перейти в каталог, в котором вы хотите выполнить поиск.
ls
не имеет возможности сделать это, и вам не следует анализировать его вывод для фильтрации обычных файлов.
find
можно использовать для поиска и перечисления обычных файлов вместо ls
. Другой вариант — использовать Zsh и его квалификаторы glob :
ls -l -- *(D.)
перечисляет все обычные файлы, включая те, имя которых начинается с точки.