我最近在笔记本电脑上播放了一些音乐mp3,但他们都是名字" songtitle.mp3.mp3"
有人知道如何删除所有文件的第二个.mp3吗?提前谢谢
答案 0 :(得分:0)
您可以使用awk
执行此操作并将结果传递到shell中:
ls | awk -F. '{print "mv "$0" "$1"."$3}' | sh
<强>提示:强>
如果你的文件名中没有.
(在你的情况下在歌词中),那么这个解决方案才有效。
答案 1 :(得分:0)
由于这是一个与编程相关的Q&amp; A网站,简单地使用mmv是不可能的; - )
#!/bin/sh
for i in *.mp3.mp3; do
j=`basename "$i" .mp3`
mv "$i" "$j"
done
如果在SO上错误地询问了这个问题,那么这是手册页: http://manpages.ubuntu.com/manpages/gutsy/man1/mmv.1.html
答案 2 :(得分:0)
使用%
形式的参数扩展。
for f in *.mp3.mp3; do
mv "$f" "${f%.mp3}"
done
您可以在bash
手册页的参数扩展部分找到相关文档。
答案 3 :(得分:0)
bash
解决方案,例如来自chepner的解决方案应该可以解决问题。
我想提一下在这里使用sed
的可能性,以及执行替换结果的e
命令(谨慎使用:首先尝试不使用e
命令在行的末尾打印将要执行的内容。)
这会使:
ls -1 *.mp3.mp3 | sed 's/\(.+\.mp3\)\.mp3$/mv & \1/e'
它应列出当前目录中以.mp3.mp3
结尾的所有文件,例如:toto.mp3.mp3
。字符串toto.mp3.mp3
通过管道传输到sed,代替mv toto.mp3.mp3 toto.mp3
,打印并执行它。