1

Моя музыкальная библиотека содержит много файлов .flac, которым нужно "?"удалено из имени файла, так как мой текущий музыкальный проигрыватель (Sonos) по какой-то причине не может видеть эти файлы.

Есть ли команда или сценарий, которые помогут мне найти и удалить вопросительные знаки "?"в моем музыкальном каталоге?

Настройка каталога:

~/music/artist/album/01 title with?.flac

Спасибо

1 ответ1

3

Откройте Терминал и перейдите в каталог, затем используйте указанную команду, чтобы удалить все вхождения ? в ваших именах файлов в этом каталоге:

cd ~/music/artist/album/

for f in *; do mv -- "$f" "${f//\?/}"; done

Перед тем, как приступить к выполнению команды, вы можете проверить ее, которая покажет вам исходное имя файла, а затем новое:

for f in *; do echo -- "$f" "${f//\?/}"; done

-- 01 title with?.flac 01 title with.flac

Чтобы сделать это рекурсивно, вам нужно использовать команду find и обязательно попробовать ее сначала в тестовом каталоге. Неправильная замена строк всех ваших имен файлов может сделать вещи намного хуже, чем лучше. Для таких рекурсивных операций я всегда рекомендую заранее сделать резервную копию ваших данных.

Первая команда - это пробный прогон, означающий, что на самом деле ничего не изменилось. Вторая команда - это реальная вещь, которая рекурсивно переименовывает все имена файлов (исключая вопросительные знаки) в текущем каталоге и во всех подкаталогах:

find . -type f -name '*\?*' | while read f; do echo mv "$f" "${f//\?/}"; done

find . -type f -name '*\?*' | while read f; do mv "$f" "${f//\?/}"; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .