ПОСЛЕДНИЕ ОБНОВЛЕНИЯ:
Я почти понял это с некоторой помощью Ричарда Джессопа и его комментарием. Это вывод, который у меня сейчас есть:
(\
"DSC009.jpg"\
"wallpaper.png"\
"image732.bmp"\
"animated.gif"\
)
Мне просто нужно переключить этот последний \
на )
, и это должно быть хорошо!
// END ОБНОВЛЕНИЯ
О программе:
Мне нужно найти во всех подпапках все файлы с указанным расширением (ями) (.png, .jpg, gif .bmp). Затем в идеале выведите полный список всех результатов в одну переменную точно так же, как показано в примере ниже. Результаты чувствительны к регистру и должны быть заключены в «двойные кавычки» и разделены escape-символом \, как показано. Это должно быть выполнено из сценария bash, а НЕ из командной строки.
imagefiles=$(\
"DSC009.jpg"\
"wallpaper.png"\
"image732.bmp"\
"animated.gif")
Я искал здесь и в других местах ответы и проверенный код, который, как мне показалось, может работать, но все попытки не увенчались успехом, любая помощь приветствуется.
Поэтому код должен выглядеть примерно так:
var = "$ (введите код здесь)"
Я пробовал множество решений и вариантов, без удачи, даже просто получить некоторые результаты, которые я ищу. Как кто-то предположил, вот одна такая попытка, которая не удалась. Опять же, это всего лишь несколько вариантов. Я пробовал без кавычек, кавычки, одинарные кавычки и т. Д. c ($ path не содержит пробелов).
imagefiles="find $path -type f -name \".\(png|jpg\|gif\|bmp\)\" -printf '%f\n'"
imagefiles=$("find $path -type f -name \".\(png|jpg\|gif\|bmp\)\""
imagefiles="$(find '$path' -type f \( -iname \*.jpg -o -iname \*.png \))"
imagefiles="$(find $path -type f *.png)"
Опять же, ни один из вышеперечисленных способов не работает даже самым простым способом, за исключением возврата одного результата в лучшем случае.
РЕДАКТИРОВАТЬ: Для дальнейшего пояснения приведем еще один простой пример:
#!/bin/bash
#ROOT PATH OF FOLDERS CONTAINING IMAGES
path="/media/backup/photos/"
#FIND ALL IMAGE TYPES
imagefiles="$(find $path -type f '.\(png|jpg\|gif\|bmp\)\')"
#REMOVE IMAGE PATHS
list=`basename "$imagefiles"`
#CHECK TO VERIFY/DEBUG OUTPUT
echo "$list" > /media/found.txt
#FOUND.TXT SHOULD LOOK LIKE:
#DSC009.jpg
#wallpaper.png
#image732.bmp
#animated.gif
#CREATE NEW VARIABLE BUT SOMEHOW OUTPUT LIKE EXAMPLE BELOW
images="$(cat found.txt)"
#EXAMPLE:
#(\
#"DSC009.jpg"\
#"wallpaper.png"\
#"image732.bmp"\
#"animated.gif")
Надеюсь, это прояснит ситуацию немного лучше.