Если вы используете GNU find
(и, возможно, другие реализации?), Это может быть значительно упрощено:
find dir/ -type f \( -iname "*.mp4" -o -iname "*.mkv" \) \
-printf '"%f","'"${newvar//%/%%}"'","%p"\n' > "$csvfile"
Я ставлю кавычки вокруг полей вывода CSV, чтобы обрабатывать случаи, когда имена файлов могут содержать запятые. Тем не менее, он по-прежнему будет иметь проблему с именами файлов с двойными кавычками в имени.
Если используется какая-либо другая версия find
... ну, во временном файле нет необходимости. Просто перенаправьте вывод непосредственно в ваше время, пока l oop:
find test1/ -type f \( -iname "*.mp4" -o -iname "*.mkv" \) -print0 |
while IFS= read -d '' -r file; do
name=$(basename "$file")
printf '"%s","%s","%s"\n' "${name//\"/\"\"}" "$newvar" "${file//\"/\"\"}"
done > "$csvfile"
В этом случае будут выведены двойные кавычки, появляющиеся в имени файла, поэтому, если это так с вашими файлами, предпочтите его.