Скажем, когда я выполняю команду ls, результат будет:
file1 file2 file3 file4
Можно ли отобразить только определенный столбец вывода, в данном случае file2? Я пробовал следующее безуспешно:
echo ls | $2
По сути, все, что я хочу сделать, это отобразить только второй столбец, в этом случае я хочу повторить:
file2
ls
выходной?ls
и после создания некоторых файлов / папок это может перестать быть тем, что вы хотите. Как отметил Тердон, есть лучшие способы получить то, что вы хотитеОтветы:
Следующая команда отформатирует вывод ls в один столбец
источник
ls -1 /directory | head -2 | tail -1
илиls -1 /directory | perl -ne 'print if $. == 2'
ls | sed -n '1p;q'
кажется прощеВы ищете это:
Однако, если вы попытаетесь использовать это имя файла позже, не делайте этого, так как оно будет разбито на имена файлов, содержащие пробелы. Вместо этого поместите файлы в массив и получите второй, который вообще не требует анализа:
Порядок, в котором вы возвращаете файлы, зависит от значения
LC_COLLATE
. Таким образом, вы можете установитьLC_COLLATE=C
сначала, если вы хотите "стандартную" сортировку во всех угловых случаях.источник
1
с значений в разумных оболочках (zsh, yash, fish, csh, tcsh, rc, es ...) и0
с значений в ksh и bash. Для решения, переносимого на все оболочки типа Bourne, вы можете использовать:set -- *; printf '%s\n' "$2"
вместо этого.Вы должны добавить,
-C
какls
использует режим с одним столбцом, когда вывод не является терминалом.awk
затем печатает второй столбец:источник
Я думаю, что вы ищете
Он не будет отображать права доступа, владельца, группу, дату, размер ... а просто имя файла в одном столбце.
источник
Единственный способ, который работает для меня - это добавить «-все». Это:
Потому что
-all
добавить больше столбцов, таких как пользователь, разрешения и т. Д.источник
Как уже было упомянуто - использование столбцов для анализа
ls
вывода не очень надежно, потому чтоls
разбивает строки в соответствии с длиной имени вашего файла и шириной терминала. Хотя часто интересно отображать один столбец списка элементов. Вы можете сделать это используя команду cut:будет отображать
Обратите внимание, что
-d
позволяет выбрать разделитель столбцов, например, с помощьюВы можете отобразить второй столбец списка через запятую.
источник
Предположим, если вы хотите отобразить только определенное имя файла в текущем пути, используйте команду ниже
команда:
источник
Это сложно, потому что разбор
ls -C
зависит от:ls -C
)ls -C
выходные данные являются столбцовыми, но могут быть настроены на различное количество пробелов в качестве разделителей полей.ls
выбранных параметров отображения).А сейчас давайте начнем с более простой проблемы ( т.е. не с № 4 выше), предполагая, что в именах файлов нет пробелов . Чтобы напечатать столбец № 2, это работает:
Развернув это:
COLUMNS=$COLUMNS
гарантирует, что заданная длина столбца будет|
соответствовать текущему отображению терминала. Изменение этого значения на произвольное значение тоже работает, поэтомуCOLUMNS=50
илиCOLUMNS=70
может привестиls -C
к перестановке вещей в соответствии с этой шириной.Другим методом будет использование
-w
переключателя, например :tr
делает разделители полей непротиворечивыми: одна вкладка между каждым столбцом.cut
выводит нужный столбец.источник
при необходимости измените количество символов (54), чтобы получить только те данные, которые вам нужны.
источник
54-
подсказки, вырезанные для каждого символа, начиная с позиции 54; это не останавливается на "признанной человеком" колонке