Быстрая команда ls

Другие ответчики сказали, плюс следующее, которое входит в первичные ключи для таблиц подкласса.

Ваше дело выглядит как экземпляр шаблона проектирования, известного как «Специализация обобщения», или Gen-Spec для краткости , Вопрос о том, как моделировать ген-спецификацию с использованием таблиц базы данных, появляется все время в SO.

Если вы моделировали ген-spec в OOPL, например Java, вы использовали бы средство наследования подкласса для принятия заботиться о деталях для вас. Вы бы просто определили класс, чтобы позаботиться об обобщенных объектах, а затем определите коллекцию подклассов, по одному для каждого типа специализированного объекта. Каждый подкласс расширяет обобщенный класс. Это легко и просто.

К сожалению, реляционная модель данных не имеет встроенного наследования подкласса, и, как мне известно, системы баз данных SQL не предоставляют никаких подобных средств. Но тебе не повезло. Вы можете проектировать свои таблицы для моделирования gen-spec таким образом, который параллелен кластерной структуре ООП. Затем вам необходимо организовать реализацию собственного механизма наследования при добавлении новых элементов в обобщенный класс. Подробности следуют.

Структура класса довольно проста: одна таблица для класса gen и одна таблица для каждого подкласса spec. Вот хорошая иллюстрация, с сайта Мартина Фаулера. Наследование классов. Обратите внимание, что на этой диаграмме Cricketer является как подклассом, так и суперклассом. Вы должны выбрать, какие атрибуты входят в таблицы. На диаграмме показан один пример атрибута в каждой таблице.

Трудная деталь заключается в том, как вы определяете первичные ключи для этих таблиц. Таблица gen class получает первичный ключ обычным способом (если эта таблица не является специализацией еще одного обобщения, например Cricketers). Большинство дизайнеров дают первичному ключу стандартное имя, например «Id». Они используют функцию autonumber для заполнения поля Id. Таблицы классов spec получают первичный ключ, который можно назвать «Id», но функция autonumber не используется. Вместо этого первичный ключ каждой таблицы подкласса ограничивается ссылкой на первичный ключ обобщенной таблицы. Это делает каждый из специализированных первичных ключей внешним ключом, а также первичным ключом. Обратите внимание, что в случае Cricketers поле Id будет ссылаться на поле Id в Players, но поле Id в Bowlers будет ссылаться на поле Id в Cricketers.

Теперь, когда вы добавляете новые элементы, вам необходимо поддерживать ссылочную целостность. Вот как это сделать. Сначала вы вставляете новую строку в таблицу gen, предоставляя данные для всех своих атрибутов, за исключением первичного ключа. Механизм autonumber генерирует уникальный первичный ключ. Затем вы вставляете новую строку в соответствующую таблицу спецификаций, включая данные для всех ее атрибутов, включая первичный ключ. Первичный ключ, который вы используете, это копия только что созданного первичного ключа. Это распространение первичного ключа можно назвать «наследованием бедных людей».

Теперь, когда вы хотите, чтобы все обобщенные данные вместе со всеми специализированными данными только из одного подкласса, все, что вам нужно сделать, это присоединиться к двум таблицы по общим ключам. Все данные, которые не относятся к рассматриваемому подклассу, будут исключены из соединения. Он гладкий, легкий и быстрый.

36
задан the Tin Man 28 October 2014 в 17:46
поделиться

13 ответов

ls -U

сделает ls без сортировки.

39
ответ дан Paul Tomblin 27 November 2019 в 05:29
поделиться

Можно также использовать xargs. Просто передайте вывод по каналу ls до xargs.

ls | xargs

, Если это не работает и эти , находят , примеры выше не работают, пытаются передать их по каналу к xargs, поскольку он может помочь использованию памяти, которое могло бы вызывать Ваши проблемы.

-2
ответ дан Jim 27 November 2019 в 05:29
поделиться

Много других хороших решений здесь, но в интересах полноты:

echo *
-1
ответ дан jj33 27 November 2019 в 05:29
поделиться

Необходимо предоставить информацию о том, какую операционную систему и тип файловой системы Вы используете. На определенных ароматах UNIX и определенных файловых систем Вы могли бы быть в состоянии использовать команды ff и ncheck как альтернативы.

0
ответ дан mwfearnley 27 November 2019 в 05:29
поделиться

Как насчет find ./ -type f (который будет находить все файлы в в настоящее время каталог)? Взлетите -type f для нахождения всего.

1
ответ дан the Tin Man 27 November 2019 в 05:29
поделиться

Какой тип раздела Вы используете?

Наличие миллионы маленьких файлов в одном каталоге это могла бы быть хорошая идея использовать JFS или ReiserFS, которые имеют лучшую производительность со многими маленькими размерными файлами.

1
ответ дан the Tin Man 27 November 2019 в 05:29
поделиться

Если процесс "не возвращается", я рекомендую strace проанализировать, как процесс взаимодействует с операционной системой.

В случае ls:

$strace ls

Вы видели бы, что это читает все записи каталога ( getdents (2) ), прежде чем это на самом деле произведет что-либо. (sorting†¦, как это было уже упомянуто здесь)

2
ответ дан Benedikt Waldvogel 27 November 2019 в 05:29
поделиться

Вещи попробовать:

Проверка ls не искажается?

alias ls

, Возможно, попытка находят вместо этого?

find . \( -type d -name . -prune \) -o \( -type f -print \)

Hope это помогает.

1
ответ дан toolkit 27 November 2019 в 05:29
поделиться

Можно перенаправить вывод и выполнить процесс ls в фоновом режиме.

ls > myls.txt &

Это позволило бы Вам продолжать о Вашем бизнесе в то время как его выполнение. Это не заперло бы Вашу оболочку.

Не уверенный в том, что опции для выполнения ls и возвращения меньше данных. Вы могли всегда работать man ls для проверки.

4
ответ дан the Tin Man 27 November 2019 в 05:29
поделиться

Использование попытки:

find . -type f -maxdepth 1

Это только перечислит файлы в каталоге, не учтет -type f аргумент, если Вы захотите перечислить файлы и каталоги.

11
ответ дан the Tin Man 27 November 2019 в 05:29
поделиться

Я предполагаю, что Вы используете GNU ls? попробуйте

\ls

, Это не исказит обычный ls (ls - color=auto).

2
ответ дан wbkang 27 November 2019 в 05:29
поделиться

Некоторые дополнения: Вы не упоминаете, на какой ОС вы работаете, что поможет указать, какую версию ls вы используете. Вероятно, это не столько вопрос «bash», сколько вопрос ls. Я предполагаю, что вы используете GNU ls, у которого есть некоторые функции, которые полезны в некоторых контекстах, но убивают вас в больших каталогах.

GNU ls Попытка получить более красивую организацию столбцов. GNU ls пытается грамотно расположить все имена файлов. В огромном каталоге это займет некоторое время и память.

Чтобы «исправить» это, вы можете попробовать:

ls -1 # вообще нет столбцов

найти BSD ls где-нибудь, http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/ и используйте его в своих больших каталогах.

Используйте другие инструменты, такие как find

1
ответ дан 27 November 2019 в 05:29
поделиться

Это, вероятно, бесполезный ответ, но если у вас нет find, вы можете обойтись tar

$ tar cvf /dev/null .

Мне сказали люди старше меня, что «когда-то» однопользовательские среды и среды восстановления были намного более ограниченными, чем сейчас. Вот откуда этот трюк.

4
ответ дан 27 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: