Я новичок в bash и изучаю электроинструменты sed
, awk
и многие другие, что предлагает эта платформа. В моем linux box у меня есть музыкальный каталог, содержащий подкаталоги. Эти подкаталоги имеют верхний индекс в названии. Я пытаюсь сделать все папки внутри этого музыкального каталога в нижнем регистре и вырезать интервал. За исключением того, что вы не изменяете ничего, что приходит после последнего дефиса, отличного от того, чтобы разбить пробел в имени подкаталога. Файл может иметь много дефис. Я просто принимаю во внимание последний. Как я могу это сделать?Имена каталогов - Удаление пробелов и другое форматирование
while read -r file; do
new_file=$(echo "$file" | sed -re 's/^([^-]*)-\s*([^\.]*)/\L\1\E-\2/' -e 's/ /_/g' -e 's/_-/-/g')
if [ "$file" != "$new_file" ]; then
mv "$file" "$new_file"
fi
done
Например:
ввода
New- Survivor - Eye Of The Tiger – 12wOlL
Желаемый результат:
new-survivor_-_ eye_of_the_tiger-12wOlL
Текущий результат:
new-Survivor_-_ Eye_of_The_Tiger-12wOlL
Вам нужно уточнить правила преобразование немного больше. Почему «New-Survivor» стал «новым выжившим», но «Survivor-Eye» стал «выжившим _-_ глаз», а снова «Tiger-12wOlL» стал «tiger-12wOlL». Когда пробел после '-' должен быть преобразован в' _' и когда его следует удалить? – anubhava
@anubhava Я добавляю 'New-' все остальное исходное имя файла. Вот почему другие дефисы окружены подчеркиванием. Исключением является первый и последний дефис –