Я использовал эту команду для отображения первого результата файлов в моем каталоге.
ls | head -n 1
Мой простой вопрос: как я могу изменить эту команду для отображения, скажем, n-го результата?
Благодарность!
источник
Я использовал эту команду для отображения первого результата файлов в моем каталоге.
ls | head -n 1
Мой простой вопрос: как я могу изменить эту команду для отображения, скажем, n-го результата?
Благодарность!
Вы можете использовать sed, чтобы выбрать одну строку, например, строку 12:
ls | sed -n 12p
Опция -n
просит sed не печатать каждую строку (как обычно) и 12p
просит печатать пространство шаблона, когда адрес равен 12.
Возможно, есть лучшие способы сделать это, но это, вероятно, самый простой: ls | head -<n> | tail -1
Прямо вперед с awk
:
$ ls / | awk 'NR==4'
etc
У меня есть это в моем .bashrc
.
lsn () {
ls ${@:2} | head -n $1 | tail -n 1
}
Это называется так: lsn 4
например. Параметр $2
позволяет использовать
параметры, ls
поэтому lsn 4 -lah
также действует.
Примечание: при использовании -l
флажка ls
вверху результата появляется дополнительная строка. Который исказит результат этой функции.
ls "$@"
чтобы передатьlsn
аргументы доls
. Конечно, после использованияshift
вывезти$1
.$@
подход. Хорошо подмечено.С
zsh
и глоб-классификаторы:или
напечатает 7-й файл из списка файлов, отсортированных по имени.
или
напечатает 7-й файл из списка файлов,
o
отсортированных поm
времени (самый новый первый - аналогично извлечению 7-й записи изls -t
вывода).В идеале, если вы обрабатываете
ls
вывод, вы должны использовать что-то вроде,ls -q | command(s)
где-q
печатает?
вместо броских символов (например, новые строки) иcommand(s)
обрабатывает только N строк вывода, печатает N-ю, а затем останавливается.источник
С хвостом и головой (добавлено нл для ясности). Давайте возьмем пятую строку:
Это перейдет к пятой строке:
Тогда явно голова -1
источник