我有一个文件列表:
Mano Negra - Amerika Perdida - 01 - Mano Negra.mp3
Mano Negra - Amerika Perdida - 02 - Mala Vida.mp3
Mano Negra - Amerika Perdida - 03 - Amerika Perdida.mp3
Mano Negra - Amerika Perdida - 04 - Peligro.mp3
[etc...]
我想这样重命名它们:
01 - Mano Negra.mp3
02 - Mala Vida.mp3
03 - Amerika Perdida.mp3
04 - Peligro.mp3
[etc...]
但是当我跑步时
for i in *; do mv $i "`echo ${i#*'da - '}`"; done
我得到的只是mv
命令的用法(对于我尝试编辑的每个文件):
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
[etc...]
我哪里错了?我跑步时没问题for i in *; do echo ${i#*'da - '}; done
您的问题是您的输入文件中有空格..所以
for i in *; do mv $i "`echo ${i#*'da - '}`"; done
变成
mv Mano Negra - Amerika Perdida - 01 - Mano Negra.mp3 "01 - Mano Negra.mp3"
这不是您想要的,您只需要mv即可接收2个参数。
mv "Mano Negra - Amerika Perdida - 01 - Mano Negra.mp3" "01 - Mano Negra.mp3"
因此,解决问题的方法是将$ i更改为“ $ i”,因为您已经引用了第二个参数。
for i in *; do mv "$i" "`echo ${i#*'da - '}`"; done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句