Самый простой способ удалить & ldquo; total & lt; size & gt; & rdquo; линия от выхода ls -l?

Лучшее, что я мог найти через Google / man ls, было:

ls -l | grep -v '^total'

Есть ли что-то, что мне не хватает в флагах для ls?

Кроме того, почему общий размер в kb, независимо от флага -h? царапины, кажется, что он делает, не уверен, что я видел тогда.

13
задан 18 September 2011 в 14:57

32 ответа

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 25 May 2018 в 18:52
  • 1
    Фактически -d перечисляет каталоги вместо записей. – H2ONaCl 21 September 2013 в 10:39
  • 2
    @broiyan Вы можете взять справочную страницу ls в письме или считать это: ls / можно интерпретировать как «список записи /, если это файл или содержимое каталога /, если это каталог & Quot ;. Использование -d удаляет последнее условие и всегда будет печатать запись вместо содержимого каталога. Это применимо независимо от того, является ли путь файлом или каталогом. – Lekensteyn 21 September 2013 в 14:41
  • 3
    Я бы поднял это снова, если бы мог – dps 18 March 2018 в 02:04

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 25 July 2018 в 21:20

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 31 July 2018 в 10:45

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 2 August 2018 в 02:59

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 4 August 2018 в 18:49

В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.

Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):

ls -ld * .*

Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.

9
ответ дан 6 August 2018 в 03:13

глядя в исходный код coreutils, я узнал, что total всегда отображается при использовании параметра [F4] на каталоги.

с помощью параметра [F5], чтобы элементы списка, а не содержимое каталога скрывает total. Но если запустить без аргументов (или по каталогу), это будет просто показать каталог, а не его содержимое. Поэтому вам нужно подстановочные знаки. * соответствует все файлы и нажать [F8] матчи скрытых файлов, а также (что соответствует параметру -a):

ls -ld * .*

, а для параметра -h, это работает для меня. 1118360 байт отображаться как файлы 1.1 М. меньше, чем 1024 показывают в байтах.

9
ответ дан 7 August 2018 в 20:54

глядя в исходный код coreutils, я узнал, что total всегда отображается при использовании параметра [F4] на каталоги.

с помощью параметра [F5], чтобы элементы списка, а не содержимое каталога скрывает total. Но если запустить без аргументов (или по каталогу), это будет просто показать каталог, а не его содержимое. Поэтому вам нужно подстановочные знаки. * соответствует все файлы и нажать [F8] матчи скрытых файлов, а также (что соответствует параметру -a):

ls -ld * .*

, а для параметра -h, это работает для меня. 1118360 байт отображаться как файлы 1.1 М. меньше, чем 1024 показывают в байтах.

9
ответ дан 10 August 2018 в 09:16

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash
ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 25 May 2018 в 18:52
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 25 May 2018 в 18:52
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранит цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: [t1]

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 25 May 2018 в 18:52

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 25 July 2018 в 21:20
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 25 July 2018 в 21:20
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранит цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: [t1]

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 25 July 2018 в 21:20

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 31 July 2018 в 10:45
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 31 July 2018 в 10:45
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранит цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: [t1]

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 31 July 2018 в 10:45

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 2 August 2018 в 02:59
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 2 August 2018 в 02:59
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранит цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: [t1]

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 2 August 2018 в 02:59

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 4 August 2018 в 18:49
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 4 August 2018 в 18:49
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранить цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: следующие не работает, если у вас есть файл под названием "общая.."..

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 4 August 2018 в 18:49

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 6 August 2018 в 03:13
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 6 August 2018 в 03:13
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранить цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: следующие не работает, если у вас есть файл под названием "общая.."..

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 6 August 2018 в 03:13

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 7 August 2018 в 20:54
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

ls -l *

Дает вам содержимое папки с обычным именем без total. Это может быть подходящим для ваших нужд. К сожалению, он не даст вам префиксные файлы dot. Если вы используете ls -l * .*, вы получите беспорядок, так как linux будет перемещаться по дереву.

Обратите внимание, что префикс точки может означать папку или подстановочный знак, это означает, что указанная выше папка не позволяет вам выбирать обычные файлы с префиксом точки. Это, кажется, было неудачным проектным решением.

0
ответ дан 7 August 2018 в 20:54
$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов) $ ls -ld [path-to-dir]/* (вывод содержит относительные пути, но сохранит цвета) $ ls -l [DIRECTORY] | tail -n +2 $ ls -l [DIRECTORY] | awk 'NR>=1'

Примечание: [t1]

$ ls -l [DIRECTORY] | sed 1d (вывод содержит имена файлов)

0
ответ дан 7 August 2018 в 20:54

Использование подстановочных знаков во избежание использования ls в списке каталогов субоптимально, поскольку оно не позволяет вам использовать опции ls, такие как --almost-all.

Как и предложение Enzotib, самый простой способ его удалить должен пропустить его через tail, чтобы отрубить первую строку. Тем не менее, ls обнаружит, что его вывод является каналом, а не интерактивным, и изменяет его значения по умолчанию нежелательным образом. Следовательно, чтобы сделать его надежным, вы также должны добавить некоторые опции:

--color=always: продолжать показывать цвета --hide-control-chars: печатать ? в именах файлов вместо управляющих символов, которые могут испортить вывод консоли

У меня есть скрипт ~/bin/l (вы также можете использовать псевдоним Bash в ~/.bash_aliases):

#!/bin/bash ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

Вы также можете добавить любые другие ls параметры, которые вы хотите по умолчанию, например [F13].

6
ответ дан 10 August 2018 в 09:16
  • 1
    Однако это не сработает, если вы передадите несколько имен файлов в ls. – Sparhawk 26 April 2017 в 06:57

Другие вопросы по тегам:

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