Нет необходимости писать собственную рекурсивную функцию. Вы можете рекурсивно найти все *.dylib
файлы, используя **
glob:
shopt -s globstar
ls "$1"/**/*.dylib
или использовать find
:
find "$1" -name '*.dylib'
Чтобы использовать эти результаты, я рекомендую зацикливать их напрямую , Это позволяет избежать использования памяти временным массивом.
shopt -s globstar
for file in "$1"/**/*.dylib; do
echo "$file"
done
или
while IFS= read -rd '' file; do
echo "$file"
done < <(find "$1" -name '*.dylib')
Есть ли способ сохранить все в массив строк, чтобы я может выполнить операцию с этими файлами .dylib?
Но если вам действительно нужен массив, вы можете написать:
shopt -s globstar
files=("$1"/**/*.dylib)
или
readarray -td '' files < <(find "$1" -name '*.dylib')
Затем к l oop над массивом вы напишите:
for file in "${files[@]}"; do
echo "$file"
done