Аудиофайлы, измененные командой bash, переименовывая их

Сегодня я отправляю случай неожиданного последствия команды оболочки на некоторые аудиофайлы, которые я вообще не понимаю.

Вот факты:

  1. Моя ОС – это ArchLinux, менеджер окон – Awesome, а для терминала используется Konsole.

  2. Имея много каталогов и файлов, содержащих пробелы и / или определенные символы, как ',{,[,?,! Я хотел переименовать их, удалив любые пробелы и / или определенные символы.

  3. Если вы ищете команду оболочки, я нашел эту замену (например) символом _ символом a . :

$ find ./ -type f -exec sed -i -e's /_/ ./ g '{} \;

  1. Я использовал эту команду во многих каталогах, в которых все файлы были переименованы, как я ожидал, я был доволен этим.

Но

  1. Имея несколько каталогов, содержащих некоторые аудиофайлы, которые я хотел переименовать, я применил эту команду bash в этих каталогах. В отличие от предыдущих применений, процесс был более длительным, и в конце его результат был не таким, как я ожидал. Сначала большинство файлов не были переименованы. Во-вторых, все аудиофайлы (mp3, flac, …) были изменены / повреждены и больше не идентифицированы никаким устройством чтения аудиофайлов. Напротив, аудиофайлы, на которых я не использовал команду bash, всегда правы и могут быть прочитаны.

Например, когда я пытаюсь прочитать один из измененных файлов с помощью smplayer, появляется сообщение об ошибке: MPlayer / mpv завершился неожиданно. Код выхода: 2. Файл журнала добавляет: «Не удалось распознать формат файла».

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

Используя 3 команды, чтобы получить то, что я хотел:

  • find ./ -type f -exec sed -i -e's /_/ ./ g '{} \;

  • find ./ -type f -exec sed -i -e '/ / ./g' {} \;

  • find ./ -type f -exec sed -i -e 's /.././ g' {} \;

Вот несколько примеров имен файлов до> после коррупции:

1 _-_ Bob_The_Sponge _-_ Жизнь под морем. Flac> 1 .-. Боб.The.Sponge.-. Living.under the Sea.flac (обратите внимание, что некоторые пробелы все еще присутствуют)

2 _-_ Bob_The_Sponge _-_ Nemo_my_friend.mp3> 2 .-. Bob_The.Sponge .-. Nemo my.friend.mp3 (обратите внимание, что один '_' не был удален, и одно имя было добавлено в это имя).

Все случаи не могут быть воспроизведены здесь, некоторые имена файлов были хорошо изменены, некоторые другие частично, некоторые другие, как и раньше.

Вес измененных файлов не изменился, а также права на эти файлы. Изменена только дата последнего изменения.

Естественно, я хотел бы понять, что произошло. Я попытался найти объяснения с разными браузерами, но я не нашел подобных или близких проблем.

Итак, мои вопросы:

  1. Почему эта команда bash, похоже, изменила эти аудиофайлы?
  2. Почему эта команда влияет на этот тип файла, а не на другие?
  3. Что может быть решением для устранения повреждений этой команды в этих файлах?

  • Как запретить пользователям удалять каталог?
  • Скопируйте файлы, которые частично соответствуют другим файлам в другом месте
  • Сравнение файлов в unix в столбце
  • Как cp или rm-файлы на основе прав собственности / разрешения
  • Команда для снятия скриншота с нового файла
  • Команда bash force копирует один и тот же файл
  • В Emacs, как мне проверить, что было изменено в буфере (перед сохранением и перезаписью файла)?
  • Запустите файл .sh вместо его открытия.
  • One Solution collect form web for “Аудиофайлы, измененные командой bash, переименовывая их”

    Вы использовали следующую команду

     find ./ -type f -exec sed -i -e 's/_/./g' {} \; 

    Что это в основном делает

     sed -i -e 's/_/./g' filename 

    для каждого файла, найденного командой find . sed проходит через ваши файлы, строка за строкой и команду s (substitute), заменяет каждый _ на a . , И поскольку вы используете флаг -i , это происходит внутри. Неудивительно, что ваши файлы повреждены!

    Вы не сможете воспроизвести старые файлы. Вы изменили _ , и .. to . , Все, что вы знаете, это все . в ваших файлах, может быть одним из этих символов (или a . ).

    Interesting Posts

    Различное использование папок в каталоге / (root)

    Просмотр (мониторинг) состояния линии последовательного порта

    Как запустить удаленную команду sed через ssh, если данные содержат двойные кавычки ("")?

    Документация mbcache

    ssh не удается найти «домашний каталог» (который существует и имеет разрешения), даже если локальный терминал регистрирует одного и того же пользователя в

    Не знаете, что означает значение в сообщении журнала в журнале auth?

    Как pdflush, kjournald, swapd и т. Д. Взаимодействуют?

    Преобразование данных вертикального массива в данные горизонтальных массивов

    Установка PHP7.0 из sid на jessie

    Захват вывода / перенаправления команд, скопированных с помощью &&

    Удаление текста из активных программ в панели

    попытка переназначить f9 для вставки ключа

    Проблема с клавиатурой с тестированием Debian и gdm3

    Установка Linux на одном основном разделе

    Как узнать, что использует swap на FreeBSD?

    Linux и Unix - лучшая ОС в мире.