我的音乐库包含许多 .flac 文件,需要从文件名中删除“?”,因为我当前的音乐播放器(Sonos)由于某种原因无法看到这些文件。
是否有命令或脚本可以帮助我查找并删除音乐目录中的问号“?”?
目录设置:
~/music/artist/album/01 title with?.flac
谢谢
答案1
打开终端并更改为您的目录,然后使用列出的命令删除?
该目录中文件名中的所有出现:
cd ~/music/artist/album/
for f in *; do mv -- "$f" "${f//\?/}"; done
提交之前运行该命令后您可以测试它,它将显示原始文件名和新文件名:
for f in *; do echo -- "$f" "${f//\?/}"; done
-- 01 title with?.flac 01 title with.flac
要递归执行此操作,您需要使用find
命令,然后一定要先在测试目录中尝试一下。弄乱所有文件名的替换字符串可能会让事情变得更糟而不是更好。对于此类递归操作,我始终建议事先备份数据。
第一个命令是试运行,这意味着实际上什么都没有改变。第二个命令是真正的命令,它递归地重命名当前目录中的所有文件名(消除问号)以及所有子目录:
find . -type f -name '*\?*' | while read f; do echo mv "$f" "${f//\?/}"; done
find . -type f -name '*\?*' | while read f; do mv "$f" "${f//\?/}"; done