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

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

Вот факты:

  • mv: перемещать файл только в том случае, если адресата не существует
  • Самый быстрый способ конвертировать большое количество FLAC в MP3-файлы
  • Как разбить аудиофайл на несколько?
  • бесплатное программное обеспечение для редактирования видео для Linux с автосогласованием аудиодорожек
  • Как я могу увидеть историческое время изменения файла?
  • Какой стандарт интерфейса аудио плагина я должен использовать в Linux?
    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
  • Скажите, скрыта ли папка / файл в Mac OS X
  • Поиск разреженных файлов?
  • chroot в папку sshfs
  • переименовать список файлов в соответствии с текстовым файлом
  • Объединение папок с одним и тем же именем, но с другим корпусом
  • 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 . ).

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