LINUX.ORG.RU

find: Как вывести список найденых файлов с пробелом вместо новой сторки в качестве разделителя?

 ,


0

1


Последнее исправление: bbgg (всего исправлений: 1)
Ответ на: комментарий от gagarin0
Ответ на: комментарий от router

Я так понял bash не умеет в переменной держать разделитель нулём. Мне нужно не одной проге передать, если точнее в bash со списком возиться, отфильтровать например. По одному файлу передать нет проблем. Собственно я и красноглазить пошёл, чтобы тип оптимизировать, передав сразу несколько файлов за раз, но хз как теперь это делать.

bbgg
() автор топика
Ответ на: комментарий от bbgg

Поправьте если ошибаюсь.

Поправляю

bash только с символами т.е. с текстом умеет работать

Ты в курсе, что json - это голый текст? При этом он используется для представления любых структур данных. Ну или чуть раньше - xml

и массив состоит опять из кавычек скобок и прочего, и нужно экранировать.

Массив составит из элементов. Как именно баш их хранит - его дело. Важно то, что он умеет это делать. Костыли добавлять не нужно. Проблема на твоей стороне

router ★★★★★
()
Ответ на: комментарий от bbgg

Ещё раз советую ознакомиться с ABS

Как вариант, можешь поискать на торрентах что-нибудь для начального экзамена по rhel (ex200)

Из новых книг можно посмотреть

  • Олбинг, Фоссен - «Идиомы bash», O’Reilly, 2023
  • Баррет - «командная строка linux», O’Reilly, 2023
router ★★★★★
()
Ответ на: комментарий от bbgg

Я так понял bash не умеет в переменной держать разделитель нулём.

Ноль принципиально нужен?

IFS='
'
files=($(find))

Вот эта штука положит в массив files все файлы, разделяя по новой строке. 99% случаев покроет, кроме наличия самой новой строки в названии файла (эту проблему хоть и можно решить адскими извращениями, но лучше забить).

Edit: поправил код

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 2)

Тебе нужно что-то типа такого:

#!/usr/bin/env bash

FIND_OUTPUT="$(find <что ты там ищешь>)"

# меняешь разделитель баша с пробела на перевод строки
SAVEIFS="$IFS"
IFS=$'\n'

for FILEPATH in $FIND_OUTPUT; do
    # тут делаешь что тебе нужно с каждой строкой
    echo "$FILEPATH"
done

# возвращаешь разделить обратно на пробел
IFS="$SAVEIFS"
MoldAndLimeHoney
()
Последнее исправление: MoldAndLimeHoney (всего исправлений: 1)