Перечислите только размер файла и имя и символьные ссылки

Вот, вероятно, лучшее описание эха по сравнению с printf

http://www.in-ulm.de/~mascheck/various/echo+printf/

На очень высоком уровне.. printf похож на эхо, но больше форматирования может быть сделано.

7
21.11.2013, 02:54
4 ответа

Выбор столбцов для печати с awk

Один метод должен был бы проанализировать вывод ls.

Пример

$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K

Между прочим, можно очистить выходное использование column.

$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z                                                   4
.youtube-dl                                         4.0K
.zenmap                                             4.0K
.zshrc                                              32
zzzz                                                3.3K

Выбор столбцов для удаления с awk

Если Вы удалили бы другие столбцы, при хранении других можно использовать это awk метод для потери сознания нежелательных столбцов.

Пример

$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
    4.0K    .youtube-dl
    4    z -> zzzz
    4.0K    .zenmap
    32    .zshrc
    3.3K    zzzz

Возможное решение

OP придумал эту цепочку команд, с помощью соединения примеров сверху.

$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column 
...
4.0K  .gphoto              773   .rdebug_hist     4.0K  .youtube-dl
1.5K  .grip                4.0K  .rdesktop        4     z->zzzz
5
27.01.2020, 20:17
  • 1
    , если я использую ls -lah | awk '{print $5, $9$10$11}'|column Я получаю то, что я хотел –  rubo77 21.11.2013, 02:59
  • 2
    @rubo77 - видят обновления, чтобы другой метод заменил нежелательные столбцы пустым местом также. –  slm♦ 21.11.2013, 03:00
  • 3
    Вы должны обрезать каждую строку и отправили это в column –  rubo77 21.11.2013, 03:01
  • 4
    Ваша awk стратегия не сохраняет выравнивание. Те включение столбца использования усекают имена файлов, содержащие пробелы; тот с удалением столбца не имеет этого дефекта. Также передача по каналу в другую команду подавляет цвета, которые используют многие люди. –  Gilles 'SO- stop being evil' 21.11.2013, 03:08
  • 5
    Если Вы ожидаете файлы с продвижением или конечными пробелами, Вы могли бы использовать ls -lahQ заключить имена файлов в кавычки вместо этого –  rubo77 21.11.2013, 03:11

Из страницы справочника:

  -s, --size
          print the allocated size of each file, in blocks

Таким образом для человекочитаемых размеров:

ls -sh
2
27.01.2020, 20:17

Один быстрый и грязный путь состоит в том, чтобы объединить вывод ls -lah с несколькими другими командами:

ls -lah | tr -s ' ' | cut -d' ' -f5,9-

tr -s управляйте заменяет несколько пробелов одиночными пробелами, и cut -d' ' -f5,9- столбцы 5 и 9 печати (и вне). 9- требуется, чтобы составлять дополнительные разделенные пробелом столбцы, произведенные символьными ссылками.

2
27.01.2020, 20:17

Самое близкое можно добраться с ls только должен подавить пользователя и столбцы группы с ls -log. Если Вы хотите пойти далее, можно проанализировать вывод. Остерегайтесь этого, второй столбец (число каналов) имеет переменную ширину. Следующий отрывок оболочки заботится для сохранения выравнивания столбца, справляется с произвольными именами файлов (кроме новых строк, если они передаются буквально), и отображает вывод в цвете (удалите ту часть, если Вы не выполняете GNU coreutils).

if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'
1
27.01.2020, 20:17
  • 1
    Действительно ли возможно добраться, этот columnized как ls без опций делает? столбцы –  rubo77 21.11.2013, 03:22
  • 2
    @rubo77 не играют так хорошо с отображением целей символьной ссылки, которые имеют тенденцию становиться довольно широкими. Если Вы действительно хотите это, передавая по каналу через column путь состоит в том, чтобы пойти. –  Gilles 'SO- stop being evil' 21.11.2013, 03:29
  • 3
    Этот ответ прекрасен также, Вы могли использовать: ls -halog --color=no | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'|column –  rubo77 21.11.2013, 04:13
  • 4
    , но ответ slm с awk легче помнить –  rubo77 21.11.2013, 04:14

Теги

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