Пропуск первой строки из любого вывода команды Linux

167

У меня есть требование, где я хотел бы опустить 1-ю строку из вывода, так ls -latr "some path"как мне нужно удалить total 136из вывода ниже

введите описание изображения здесь

Итак, я написал, ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qчто исключил 1-ую строку, но когда папка пуста, она не опускается. Подскажите пожалуйста как пропустить 1-ю строку в любом выводе команды linux

AabinGunz
источник

Ответы:

185

Труба это к awk:

awk '{if(NR>1)print}'

или sed

sed -n '1!p'
Фредрик Пихл
источник
21
илиawk 'NR>1'
Митч
24
такжеsed '1d'
JoL
261

tailПрограмма может сделать это:

ls -lart | tail -n +2

Эти -n +2средства «начали проход на второй строке вывода».

Donal Fellows
источник
1
Обратите внимание, что для некоторых tailреализаций для этого требуется -nфлаг, как вtail -n +2
Mat
Вы также можете использовать find . -name . -o -ls -prune, но это дает несколько другой результат.
Donal Fellows
@ Мат: Так что, кажется, хотя он работал без, когда я пытался (на OSX).
Донал Феллоуз
раньше он работал с coreutilsхвостом, но он устарел, а затем удален. Теперь вы получаете tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7). Печально, что другие реализации не принимают -n...
Мат
4
@ Мат: Некоторым это нужно, другим не примет? Тьфу! Тьфу тьфу тьфу тьфу! Это отвратительно.
Донал Феллоуз
23
ls -lart | tail -n +2 #argument means starting with line 2
Джефф Ферланд
источник
20

Это быстрый взломанный способ ls -lart | grep -v ^total.

По сути, удалите все строки, начинающиеся с «total», которые в lsвыходных данных должны быть только первой строкой.

Более общий способ (для чего угодно):

ls -lart | sed "1 d"

sed "1 d" означает только печатать все, кроме первой строки.

WKL
источник
3
Использование grepфильтра для этой задачи в целом опасно; это может соответствовать вещам неожиданно.
Донал Феллоуз
Иногда да, и я думаю, что это не лучшее решение ... но команда ls всегда ведет записи с правами доступа к каталогу. Это не идеально, поскольку grep продолжает проверять каждую строку, а ls ведет себя по-разному с другими флагами.
Джефф Ферланд
1
это просто семантика, но технически это означает удаление первой строки из потока.
Джон Моралес
Надеюсь, у вас нет файла с полным именем, о котором вы хотите знать
Amias