最近,我在Mac OS 10.7(Lion)上使用XLD将所有FLAC文件转换为44.1 kHz的较低采样率和24位的位深(因为iPhone / iPod不支持高于此的任何东西)。
尽管我告诉XLD改写了以前的所有文件,但XLD(1)
在文件末尾附加了一个
some_song.m4a
到
some_song(1).m4a
因此,现在我(1)
要从我转换的所有FLAC文件中删除该文件。
我知道我可能已经使用某些程序甚至AppleScript重命名了文件,但是我想学习使用老式的命令行方法。
我知道这find . -name *\(1\).m4a
将获取所有已转换的FLAC文件。
接下来,我知道我必须做的东西-exec
和mv
重命名所有找到的文件。但是我不知道是如何保留原始文件名而仅删除(1)
。
也许我需要进行一些组正则表达式捕获以存储我不想修改的文件名的一部分?或者也许不可能一齐完成所有操作,而我应该创建一个shell脚本(我做起来不太舒服,但是我愿意尝试一下)。
欢迎任何提示或建议!谢谢!
find
除非万不得已,否则不要尝试解析输出。重要的是要意识到,在Unix文件系统上,文件名不是字符串(常见的误解),而是二进制的Blob,它可以包含除/
Null字符之外的任何字符。安全正确地解析文件名足以让您在99%的时间中完全避免这样做(仅查看@yarek答案中的sed
表达式有多毛,甚至不能涵盖所有情况)就足够了。 。值得庆幸的是,在这种情况下,有一种更简单的方法:
find . -name '*(1).m4a' -execdir sh -c \
'for arg; do mv "$arg" "${arg%(1).m4a}".m4a; done' _ {} \+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句