Лучшее, что я мог найти через Google /, man ls
было:
ls -l | grep -v '^total'
Есть ли что-то, что мне не хватает в флагах ls
?
Кроме того, почему общий размер в килобайтах, независимо от флага -h? поцарапайте это, кажется, что это делает, не уверен, что я видел тогда.
ls -l | tail -n+2
, в остальном у меня нет ответа.lsl
. Всего 3 буквы;) ох, а ls -lh показывает мне размеры в стиле 1.2K.Ответы:
Глядя в исходный код
coreutils
, я обнаружил, чтоtotal
всегда будет отображаться при использовании-l
опции на каталогах .Использование
-d
опции для перечисления записей вместо содержимого каталога скрываетtotal
. Но если вы запустите это без аргументов (или для каталога), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки.*
сопоставляет все файлы и.*
сопоставляет также скрытые файлы (что соответствует-a
опции):Что касается
-h
варианта, он работает для меня. 1118360 байт отображаются как 1.1M. Файлы размером менее 1024 отображаются в байтах.источник
ls
страницу руководства на букву или рассмотреть это:ls /
можно интерпретировать как «перечислить запись,/
если это файл, или содержимое каталога,/
если это каталог». Использование-d
удаляет последнее условие и всегда печатает запись вместо содержимого каталога. Это применимо независимо от того, является ли путь файлом или каталогом.Использование символов подстановки, чтобы избежать
ls
запуска списка каталогов, является неоптимальным, потому что оно не позволяет использоватьls
такие параметры, как--almost-all
.Как и в случае с предложением Энзотиба , самый простой способ удалить его - пропустить через него,
tail
чтобы отрубить первую строку. Однакоls
он обнаружит, что его вывод является каналом, а не интерактивным, и изменит его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его устойчивым, вы должны также добавить несколько опций:--color=always
: продолжайте показывать цвета--hide-control-chars
: печатать?
в именах файлов вместо управляющих символов, которые могут испортить вывод консолиУ меня есть скрипт
~/bin/l
(вы также можете использовать псевдоним Bash в~/.bash_aliases
):Вы также можете добавить любые другие
ls
опции, которые вы хотите по умолчанию, например--group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash
.источник
ls -l *
Даст вам «нормально названное» содержимое папки без
total
. Это может подойти для ваших нужд. К сожалению, это не даст вамdot
файлы с префиксом. Если вы используете,ls -l * .*
вы получите беспорядок, так как Linux будет перемещаться вверх по дереву.Обратите внимание, что префикс точки может означать папку или подстановочный знак означает папку выше, поэтому он не поможет вам выбрать обычные файлы с префиксом точки. Похоже, это было неудачное дизайнерское решение.
источник
Примечание:
следующее не работает, если у вас есть файл с именем «total ....»
источник