![删除数百个 FLAC 文件中的符号(问号)的最佳方法是什么](https://linux22.com/image/134034/%E5%88%A0%E9%99%A4%E6%95%B0%E7%99%BE%E4%B8%AA%20FLAC%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E7%AC%A6%E5%8F%B7%EF%BC%88%E9%97%AE%E5%8F%B7%EF%BC%89%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88.png)
我最近将我的 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
.