Аудиофайлы, измененные командой 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. Что может быть решением для устранения повреждений этой команды в этих файлах?

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?
  • Что особенного в каталогах, чьи имена начинаются с точки?
  • Как восстановить временные метки файлов видеозаписей с помощью встроенных метаданных?
  • Как структурирована таблица открытых файлов?
  • Восстановление файла, который перезаписывается cat>
  • Максимальное количество открытых файлов в Linux
  • Как применить dos2unix рекурсивно ко всему содержимому папки?
  • Изменение столбца нескольких файлов csv
  • Что делают кнопки «+» и «-» в файлах Pantheon (менеджер файлов в элементарной ОС)?
  • Как искать рекурсивно в нескольких уровнях встроенных tar tgz-файлов?
  • Добавление привязок для ed2k: // связей с xdg-open?
  • Linux и Unix - лучшая ОС в мире.