Как я повторяю всего 1 столбец вывода от команды ls?

Использовать ^O к нейтрализации предыдущий открытый файл, который является Вашим деревом dir в этом случае.

57
22.02.2016, 17:38
9 ответов

Вы ищете это:

ls -C | awk '{ print $2 }'

Однако принятие Вы собираетесь попытаться использовать это имя файла позже, не делайте этого, поскольку оно повредится на именах файлов, содержащих пробел. Вместо этого поместите файлы в массив и получите второй, который избегает необходимости делать любой парсинг вообще:

files=(*)
printf '%s\n' "${files[1]}"

Порядок, в котором Вы возвращаете файлы, зависит от значения LC_COLLATE. По сути, Вы могли бы хотеть установить LC_COLLATE=C во-первых, если Вы хотите "стандартную" сортировку во всех угловых случаях.

38
27.01.2020, 19:32
  • 1
    Обратите внимание, что индексы массива запускаются в 1 в разумных оболочках (zsh, yash, рыба, csh, tcsh, дистанционное управление, es...) и в 0 в ksh и ударе. Для решения, портативного ко всем подобным Границе оболочкам, Вы могли использовать: set -- *; printf '%s\n' "$2" вместо этого. –  Stéphane Chazelas 22.02.2016, 17:36
  • 2
    @StéphaneChazelas, По крайней мере, для этого вопроса, теги включают "удар", таким образом, этот ответ характерен для той оболочки. –  Chris Down 22.02.2016, 20:19

Необходимо было бы добавить -C как ls режим отдельного столбца использования, когда вывод не является терминалом. awk затем печатает второй столбец:

ls -C | awk '{print $2}'
7
27.01.2020, 19:32

Следующая команда будет форматировать вывод LS в один столбец

ls -1 /directory
85
27.01.2020, 19:32
num_chars=54 # offset
ls -ltr | cut -c$num_chars-

измените количество символов (54) по мере необходимости, чтобы вы получали только те данные, которые вам нужны.

-1
27.01.2020, 19:32

Единственный способ, который работает для меня, это добавить "-al". То есть:

ls -C -al | awk '{ print $1 }'

Потому что -alдобавить больше столбцов, таких как пользователь, разрешения и т. д.

1
27.01.2020, 19:32

Как уже упоминалось -, использование столбцов для разбора вывода lsне очень надежно, потому что lsразбивает строки в соответствии с длиной имени файла и шириной терминала. Однако часто бывает интересно отобразить один столбец списка элементов. Вы можете сделать это, используя команду вырезания :

.
echo file1 file2 file3 file4 | cut -d" "  -f2

будет отображаться

file2

Обратите внимание, что -dпозволяет выбрать разделитель столбцов, так например с

cut -d, -f2

вы можете отобразить второй столбец списка, разделенного запятыми.

2
27.01.2020, 19:32

Думаю, вы ищете

ls -1

Не будут отображаться права доступа, владелец, группа, дата, размер... но просто имя файла в одном столбце.

6
27.01.2020, 19:32

Это сложно, потому что синтаксический анализ ls -Cзависит от:

  1. длина имени файла, (которая сама зависит от указанного списка файлов, переданного вls -C)
  2. ширина клеммы.
  3. тот факт, что вывод ls -Cсостоит из столбцов, но может быть настроен на различное количество пробелов в качестве разделителей полей.
  4. возможность пробелов в именах файлов, (отображение которых зависит от конкретных lsвыбранных опций отображения ).

А пока давайте начнем с более простой задачи,(т.е. не #4 выше ), предположим, что в именах файлов нет пробелов . Чтобы напечатать столбец #2, это работает:

COLUMNS=$COLUMNS ls -C | tr -s ' ' '\t' | cut -f2

Развернуть это:

  • COLUMNS=$COLUMNSгарантирует, что длина столбца, подаваемая на |остается в соответствии с текущим дисплеем терминала. Изменение этого к произвольному значению тоже работает, поэтому COLUMNS=50или COLUMNS=70заставит ls -Cпереставить вещи в соответствии с этой шириной.

    Другим методом может быть использование переключателя -w, например .:

    ls -w${COLUMNS} -C | tr -s ' ' '\t' | cut -f2
    
  • trделает разделители полей согласованными :одной вкладкой между каждым столбцом.

  • cutвыводит нужный столбец.

0
27.01.2020, 19:32

Предположим, если вы хотите отобразить только конкретное имя файла по текущему пути, используйте команду ниже

команда:

find path -maxdepth 1 -iname "filename"|sed "s/\.\///g"
0
27.01.2020, 19:32

Теги

Похожие вопросы