Как получить список имен файлов в разных строках - PullRequest
109 голосов
/ 01 марта 2011

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

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

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

Ответы [ 10 ]

244 голосов
/ 01 марта 2011

ls -1

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

21 голосов
/ 01 марта 2011

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

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

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

11 голосов
/ 01 марта 2011

раствор без труб: -)

 ls --format single-column

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

6 голосов
/ 01 марта 2011

Возможно:

ls | awk '{print $NF}'
4 голосов
/ 01 марта 2011

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

3 голосов
/ 21 ноября 2015

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

$ ls | xargs -n num

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

3 голосов
/ 29 сентября 2012

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

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'
1 голос
/ 29 сентября 2012

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

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

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

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

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

0 голосов
/ 05 июня 2018

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

0 голосов
/ 17 января 2017

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

ls -l | awk '{print $NF}'
...