LINUX.ORG.RU

История изменений

Исправление CrX, (текущая версия) :

Использование символов «\» в местах переноса строки не помогает.

Почему \? Попробуй \n. Ну и присоединяюсь к вопросу выше.

По основному вопросу: может тебе лучше просто в find задать путь, причём абсолютный на всякий случай?

Вместо этого:

find \( -name \*.mp3 \
     -or -name \*.MP3 \
     -or -name \*.Mp3 \
     -or -name \*.ogg \
     \) -print0 \
     | while IFS= read -r -d '' file; 

Это:

find "$(pwd)" \( -iname \*.mp3 -or -name \*.ogg \) -print0 \
| while IFS= read -r -d '' file; do

И оно заработает в изначальном варианте, без путаницы с путями.

P.S. fileWithoutExt="${file%.*}" — спасибо за наглядный пример бесполезного использования переменных. Это примерно как X_PLUS_ONE = x + 1, чтобы использовать потом один раз, только менее избито.

P.P.S. В примере выше есть небольшое отличие в функционале от твоего, помимо перечисленных оно ещё и *.mP3 тоже найдёт, если таковые есть. Если это не желаемое поведение, перепиши эту -or’ную часть обратно.

Исправление CrX, :

Использование символов «\» в местах переноса строки не помогает.

Почему \? Попробуй \n. Ну и присоединяюсь к вопросу выше.

По основному вопросу: может тебе лучше просто в find задать путь, причём абсолютный на всякий случай?

Вместо этого:

find \( -name \*.mp3 \
     -or -name \*.MP3 \
     -or -name \*.Mp3 \
     -or -name \*.ogg \
     \) -print0 \
     | while IFS= read -r -d '' file; 

Это:

find "$(pwd)" \( -iname \*.mp3 -or -name \*.ogg \) -print0 \
| while IFS= read -r -d '' file; do

И оно заработает в изначальном варианте, без путаницы с путями.

P.S. fileWithoutExt="${file%.*}" — спасибо за наглядный пример бесполезного использования переменных. Это примерно как X_PLUS_ONE = x + 1, чтобы использовать потом один раз, только менее избито.

Исходная версия CrX, :

Использование символов «\» в местах переноса строки не помогает.

Почему \? Попробуй \n. Ну и присоединяюсь к вопросу выше.

По основному вопросу: может тебе лучше просто в find задать путь, причём абсолютный на всякий случай?

Вместо этого:

find \( -name \*.mp3 \
     -or -name \*.MP3 \
     -or -name \*.Mp3 \
     -or -name \*.ogg \
     \) -print0 \
     | while IFS= read -r -d '' file; 

Это:

find "$(pwd)" \( -iname \*.mp3 -or -name \*.ogg \) -print0 \
| while IFS= read -r -d '' file; do

И оно заработает в изначальном варианте, без путаницы с путями.