Когда я использую ls
команду с параметром -l
, первая строка букв дает информацию о каждом файле, а первая буква в этой строке указывает тип файла. ( d
= каталог, -
= стандартный файл, l
= ссылка и т. д.)
Как я могу отфильтровать файлы по первой букве?
Ответы:
Вы можете отфильтровать все, кроме каталогов, используя
grep
этот способ:^
указывает на то, что шаблон находится в начале строки. Заменитеd
на-
,l
и т. Д., Если применимо.Конечно, вы можете использовать другие команды для прямого поиска определенных типов (например
find . -maxdepth 1 -type d
) или использоватьls -l | sort
для группировки похожих типов вместе на основе этого первого символа, но если вы хотите фильтровать, вы должны использовать,grep
чтобы выбрать только соответствующие строки из вывода.источник
ls -lL
.-L
будет следовать символическим ссылкам, чтобы показать, связана ли она с каталогом или файлом.Если вы хотите отобразить все выходные данные, но файлы одинакового типа перечислены вместе, вы можете отсортировать выходные данные по первому символу каждой строки:
источник
Команда
ls
имеет дело с именами файлов , которые записываются в каталог структур данных. Таким образом, он не заботится о самом файле, в том числе о «типе» файла.Команда, которая больше подходит для работы с реальными файлами , а не только с их именами,
find
. У него есть опция, которая напрямую отвечает на ваш вопрос о том, как фильтровать список по типу файла.Это дает список текущего каталога, похожего на
ls -l
:По умолчанию,
find
список каталогов рекурсивно, что отключается ограничением глубины поиска до 1.Вы можете опустить
.
, но я включил его, чтобы показать, что каталоги должны быть перечислены перед опциями.С помощью
-type
вы можете фильтровать по типу файла, который выражается какf
илиd
для простых файлов или каталогов:Существуют и другие значения фильтра
-type
, особенноl
для символических ссылок.Обратите внимание, что с символическими ссылками есть сложность :
в этом случае существует два типа файла: с
l
указанием символической ссылки и чем-то вродеf
, с указанием типа файла, с которым связан. Есть варианты, чтобы указать, как справиться с этим, так что вы можете выбрать.От
man find
:и имеет отношение к обработке символических ссылок:
и
источник
Если вас больше всего беспокоит порядок папок из других типов файлов, вы можете пойти с
иначе, я думаю, что вы должны передать вывод из ls -l через sort или через grep, как ответил Anthon
источник
awk поймает все, что начинается с d. как d для каталога, и вам нужно напечатать последнее поле, чтобы вывести имя каталога
источник
Это отсортирует результат в алфавитном порядке для каждого результата. Если первый символ является критерием, который вы хотите, вот и все. Если вам нужны только имена файлов, вы можете попробовать:
Или что-то подобное (эта команда сортирует, а затем разбивает каждую строку, используя разделитель пробелов, а затем возвращает вторую группу.
источник