Использовать ^O
к нейтрализации предыдущий открытый файл, который является Вашим деревом dir в этом случае.
Вы ищете это:
ls -C | awk '{ print $2 }'
Однако принятие Вы собираетесь попытаться использовать это имя файла позже, не делайте этого, поскольку оно повредится на именах файлов, содержащих пробел. Вместо этого поместите файлы в массив и получите второй, который избегает необходимости делать любой парсинг вообще:
files=(*)
printf '%s\n' "${files[1]}"
Порядок, в котором Вы возвращаете файлы, зависит от значения LC_COLLATE
. По сути, Вы могли бы хотеть установить LC_COLLATE=C
во-первых, если Вы хотите "стандартную" сортировку во всех угловых случаях.
Необходимо было бы добавить -C
как ls
режим отдельного столбца использования, когда вывод не является терминалом. awk
затем печатает второй столбец:
ls -C | awk '{print $2}'
Следующая команда будет форматировать вывод LS в один столбец
ls -1 /directory
num_chars=54 # offset
ls -ltr | cut -c$num_chars-
измените количество символов (54) по мере необходимости, чтобы вы получали только те данные, которые вам нужны.
Единственный способ, который работает для меня, это добавить "-al". То есть:
ls -C -al | awk '{ print $1 }'
Потому что -al
добавить больше столбцов, таких как пользователь, разрешения и т. д.
Как уже упоминалось -, использование столбцов для разбора вывода ls
не очень надежно, потому что ls
разбивает строки в соответствии с длиной имени файла и шириной терминала. Однако часто бывает интересно отобразить один столбец списка элементов. Вы можете сделать это, используя команду вырезания :
echo file1 file2 file3 file4 | cut -d" " -f2
будет отображаться
file2
Обратите внимание, что -d
позволяет выбрать разделитель столбцов, так например с
cut -d, -f2
вы можете отобразить второй столбец списка, разделенного запятыми.
Думаю, вы ищете
ls -1
Не будут отображаться права доступа, владелец, группа, дата, размер... но просто имя файла в одном столбце.
Это сложно, потому что синтаксический анализ ls -C
зависит от:
ls -C
)ls -C
состоит из столбцов, но может быть настроен на различное количество пробелов в качестве разделителей полей. 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
выводит нужный столбец.
Предположим, если вы хотите отобразить только конкретное имя файла по текущему пути, используйте команду ниже
команда:
find path -maxdepth 1 -iname "filename"|sed "s/\.\///g"
1
в разумных оболочках (zsh, yash, рыба, csh, tcsh, дистанционное управление, es...) и в0
в ksh и ударе. Для решения, портативного ко всем подобным Границе оболочкам, Вы могли использовать:set -- *; printf '%s\n' "$2"
вместо этого. – Stéphane Chazelas 22.02.2016, 17:36