Как сделать так, чтобы ls отображал только файлы?

24

Я полагаю, что должен быть способ заставить ls отображать только каталоги, но страница руководства не делает это очевидным

thinksinbinary
источник
Не уверен ls, но вы можете легко сделать это с помощью fileкоманды: file /directory/containing/the/files -maxdepth 1 -not -type d.
Хеннинг Кокербек
1
Другим способом было бы фильтровать вывод lsчерез grep, что-то вроде ls -1F /directory/containing/the/files | grep -vE /$. Но помните, что анализ выходных данных ls может быть сложным .
Хеннинг Кокербек

Ответы:

37
ls -p | grep -v /

Использование tell ls -pговорит, lsчтобы добавить косую черту к записям, которые являются каталогом, а использование grep -v /tell grepвозвращает только строки, не содержащие косую черту.

thomasrutter
источник
Я проверил этот, потому что это мой любимый ответ (хотя я все-таки голосовал против всех), но теперь пытаюсь найти способ поместить его в столбцы и изменить порядок вывода ...
thinkinbinary
«Вы можете использовать 1 переключатель для списка из одного столбца» извините, я попытался выяснить, что вы имели в виду, я был бы признателен, если бы вы
дали
@sdkks Вам не нужен 1переключатель при передаче результатов, так как в этом случае он будет по умолчанию установлен на один столбец. Если это то, что вы имели в виду.
Томасруттер
@thinksinbinary не уверен, как сделать его многостолбцовым, но вы можете найти или задать свой отдельный вопрос, и кто-то узнает.
Томасруттер
7

Вы можете попробовать это:

find . -maxdepth 1 -not -type d

И сопоставьте это специальному псевдониму.

Но если вы действительно заинтересованы в использовании lsкоманды, здесь:

ls -p | egrep -v /$

theabhinavdas
источник
6

В качестве альтернативы:

ls -lAh | grep -v '^d'

Этот метод перечисляет в

  • -l Длинный список формат
  • -A Отображает почти все (показывать скрытые файлы, но не показывать .и ..)
  • -h Удобочитаемые размеры файлов

пока grep

  • -v Не показывать соответствующие записи
  • Regular expressionфильтр ^d- те, которые начинаются с буквы d (для каталога), т.е.drwxrwxr-x <some file details> <foldername>

Если вы не хотите печатать каждый раз, вы можете сделать это псевдонимом для вашего профиля bash / shell.

sdkks
источник
2

В вашем (@thinksinbinary) комментарии к ответу @thomasrutter я увидел, что вы хотите печатать их в обратном порядке и в столбцах. Вы, наверное, уже поняли это или пошли дальше, но вот оно:

ls -pr | grep -v / | column
  • -p добавляет косую черту ('/') к именам каталогов
  • -r меняет порядок вывода
  • -v позволяет grep выполнять обратный поиск, чтобы распечатать все, кроме каталогов ( все, что не содержит '/', поставленного там -p )
  • « столбец помещает его в столбцы» - Капитан Очевидность
Леви Узодике
источник
1
я действительно думаю, что это круто, что на форуме Ubuntu люди все еще комментируют и читают ваши посты после долгого времени. Я давно хотел вернуться в Linux, чтобы изучать ассемблер и операционные системы, поскольку в Windows это сделать гораздо сложнее. Благодарность!
думает об этом
0
ls -F | grep -v /

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

ls -Fдобавляет символы к именам файлов. Эти символы показывают полезную информацию о файлах.

ls -F | grep -Ev '/|@|*|=|>|\|'

Над командой отображаются только файлы.

BarathVutukuri
источник