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

116

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

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

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

Амир Рачум
источник

Ответы:

259

ls -1

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

Шимон Тот
источник
5
я вижу это в документации: cross -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C, я не уверен, как они пришли к некоторым из них.
Александр Тейлор
23

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

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

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

jhwist
источник
Также работает на Ubuntu. Спасибо
Йонатан Симсон
12

решение без трубопроводов :-)

 ls --format single-column

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

Rene
источник
6

Может быть:

ls | awk '{print $NF}'
Eelvex
источник
примечание: имя файла с пробелами, например «apples and pears.jpg», будет преобразовано в «pears.jpg»
известно
4

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

Йохан Котлински
источник
4
Пожалуйста, избегайте бесполезного использования кота :)
jhwist 01
3
catв данном случае не бесполезен. Он форматирует вывод lsв один столбец, как запрашивает OP.
Felix Eve,
3

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

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
вара
источник
ls -lдает тот же результат, что и весь ваш ответ. Не уверен, что sedздесь добавлено ...
Феликс Ив
3

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

$ ls | xargs -n num

Вот numколичество столбцов, которые вы хотите указать.

honeytechiebee
источник
1

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

ls -l | sed 's /(.*) (. *) $ / \ 2 /'

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

найти . -maxdepth 1 | sed 's /.///'

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

Маникандан Раджендран
источник
Я получаю сообщение об ошибкеsed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS
Felix Eve
0

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

ls -l | awk '{print $NF}'
Vicky
источник
1
Чем это практически отличается от ответа Элвекса ?
All Workers Are Essential
0

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

Аншул Аюшья
источник