Как получить список имен файлов в разных строках

Я хочу получить список всех файлов в каталоге, например, с ls, чтобы каждое имя файла было в отдельной строке без дополнительных сведений, предоставляемых ls -l. Я посмотрел на ls --help и не нашел решения. я пытался сделать

ls -l | cut --fields=9 -d" "

но ls не использует фиксированное количество пробелов между столбцами. Любая идея о том, как это сделать, желательно в одной строке?


person Amir Rachum    schedule 01.03.2011    source источник


Ответы (10)


ls -1

Это число, а не маленькое L.

person Šimon Tóth    schedule 01.03.2011
comment
я вижу это в документации: крест -x, запятые -m, горизонтальный -x, длинный -l, один столбец -1, многословный -l, вертикальный -C я не уверен, как они придумали некоторые из них. - person Alexander Taylor; 22.10.2015

ls -1. Из справки:

-1 перечислить по одному файлу в строке

Работает на cygwin и FreeBSD, поэтому, вероятно, не слишком специфичен для GNU.

person jhwist    schedule 01.03.2011
comment
Работает и на Ubuntu. Спасибо - person Yonatan Simson; 26.05.2016

решение без пайпинга :-)

 ls --format single-column

Обратите внимание, что длинные параметры поддерживаются только в GNU. coreutils, где BSD ls поддерживает только короткие аргументы -1

person rene    schedule 01.03.2011

Возможно:

ls | awk '{print $NF}'
person Eelvex    schedule 01.03.2011
comment
примечание: имя файла с пробелами, например apples и pears.jpg, превратится в pears.jpg - person oknate; 23.03.2017

ls | cat ... или, возможно, ls -1

person Johan Kotlinski    schedule 01.03.2011
comment
Пожалуйста, избегайте бесполезного использования кота :) - person jhwist; 01.03.2011
comment
cat не бесполезен в этом случае. Он форматирует вывод ls в один столбец, как запрашивает OP. - person Felix Eve; 29.10.2015

Используйте команду sed для вывода списка отдельных столбцов

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
person vara    schedule 29.09.2012
comment
ls -l выдает тот же результат, что и весь ваш ответ. Не уверен, что sed добавляет сюда... - person Felix Eve; 29.10.2015

Попробуй это:

$ ls | xargs -n num

Здесь num — это количество столбцов, которые вы хотите перечислить.

person honeytechiebee    schedule 21.11.2015

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

лс -л | sed 's/(.*)(.*)$/\2/'

или же вы можете использовать таким образом

найти . -максимальная глубина 1 | sed 's/.///'

обе вещи одинаковы.

person Manikandan Rajendran    schedule 29.09.2012
comment
Я получаю сообщение об ошибке sed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS - person Felix Eve; 29.10.2015

Это также будет делать

ls -l | awk '{print $NF}'
person Vicky    schedule 17.01.2017
comment
Чем это практически отличается от ответа Eelvex? - person All Workers Are Essential; 17.01.2017

Это также работает: echo -e "\n$(ls)"

person Anshul Ayushya    schedule 05.06.2018