删除数百个 FLAC 文件中的符号(问号)的最佳方法是什么

删除数百个 FLAC 文件中的符号(问号)的最佳方法是什么

我最近将我的 600 多张专辑收藏翻录为 FLAC,到目前为止我从未注意到这些文件有问题。从 Mint 内部查看这些文件本身看起来很正常。他们都打得很好。

来自文件浏览器的文件图片

这里一切看起来都很好。但我注意到,当尝试与我的 Windows 计算机实际共享这些文件时,它们既不会播放,也不会复制。 Windows 给我一个错误,说文件名太长。我知道那是废话,因为他们显然不是。所以这让我陷入了困境,认为问题出在桑巴舞上。

结果当我浏览专辑文件夹时,每个 FLAC 文件都有一个?在他们结束之前。

来自控制台的文件名

如果我进入属性,这个丑陋的东西就隐藏在那里而不是?从控制台。

属性中的符号

这就是我的挫败感真正开始的地方。我发现一个控制台命令实际上确实解决了我的部分问题。

在此输入图像描述

当进入专辑文件夹时,它会删除 ?标记,但在歌曲名称和文件扩展名之间留一个空格。

在此输入图像描述

长话短说,有没有更好的方法来删除?一口气从我所有的 FLAC 文件中删除,同时也不在符号所在的位置留出空间?

或者我真的必须手动浏览每个专辑执行命令,然后在每个文件上手动执行退格键。我真的希望你们中的一些人在这些事情上比我做得更好。

更新

首先感谢所有就如何解决此问题提供建议的人。

我通过运行以下命令解决了我的问题:

find -name $'*\n*' -exec rename $'s|\n||g' '{}' \;

它发现我的音乐文件夹中的每个文件都带有换行符,并且还设法插入任何内容,因此文件名现在以空白.flac而不是空白(空格).flac结尾。

答案1

要从当前目录中 FLAC 文件的文件名中删除 Windows 可能不喜欢的任何字符:

for f in *.flac; do
  mv "$f" "$(echo -n "$f" | tr -cd ' -~' | tr '<>:"/\\|?*' '_')"
done

这会:

  • 删除文件名中的所有非 ASCII 或不可打印字符:tr -cd ' -~';

  • 将 Windows 不接受的任何可打印 ASCII 字符替换为下划线:tr '<>:"/\\|?*' '_'

'\n'特别是,您的文件名在.flac.

答案2

AlexP 的答案是一个很好的答案,但如果您愿意安装一些额外的软件,还有一个更简单的选择。

调查排毒。这是一个由大多数发行版打包的极其简单的程序,其功能与 AlexP 发布的 shell 脚本几乎完全相同,同时自动迭代其运行的整个文件夹。出于使用的纯粹简单性,它出现在我安装的几乎每个 Linux 系统上的相当短的程序列表中。

作为单个目录中文件的另一种选择,重命名工具将使您可以使用您喜欢的文本编辑器快速轻松地从终端进行批量重命名。当与 Vi 或 EMACS 风格编辑器一起使用时,它提供了一种相当简单的方法,使用编辑器的内置正则表达式支持对文件名执行复杂的批量转换。

相关内容