bash объединить mp3 файл с пробелами в имени файла - PullRequest
1 голос
/ 13 июля 2020

Я видел этот пост , но мне это не помогло (я не мог понять, как добавить "" и добавить к существующей строке).

Я пытаюсь создать сценарий, который объединяет все файлы mp3 в каталоге в один файл с помощью команды "cat" и дает новому файлу имя каталога, в котором он находится.

RES
dirName=${PWD##*/}
for entry in *.mp3; do
    RES="${RES} ${entry}"

done

#echo "$foo"
cat ${RES} > ${dirName}

Поскольку в именах файлов есть пробелы, я получаю следующая ошибка

cat: 01: No such file or directory
cat: רצועה: No such file or directory
cat: 1.mp3: No such file or directory
cat: 02: No such file or directory


Спасибо

1 Ответ

2 голосов
/ 13 июля 2020

Используйте массив, а не строку.

res=()
for entry in *.mp3; do
    res+=("$entry")
done

cat "${res[@]}" > "$dirName/combined.mp3"

Конечно, в этом нет необходимости. Если вам не нужно делать больше манипуляций в l oop, вы можете просто передать подстановочный знак в cat напрямую:

cat *.mp3 > "$dirName/combined.mp3"
...